История от первого лица
Как сделать аналог FindFace в одиночку и не сойти с ума
И почему так делать не надо
Читать полностью »
Рубрика «Программирование» - 313
Разработка аналога FindFace одним школьником
2018-12-31 в 10:37, admin, рубрики: android, find face, find person, FindFace, findperson, Google Play, indie, java, php, Вконтакте, машинное обучение, нейронные сети, ненормальное программирование, Программирование, Разработка под androidНовогодний Хабрачат-2019
2018-12-30 в 15:45, admin, рубрики: 2019, Программирование, Сетевые технологии, системное администрирование, Хабрачат
Дорогие коллеги!
Скоро-скоро Новый год! Пришло время всем нам собраться и хорошо провести время в уютном новогоднем хабрачате!
Читать полностью »
Как я делал «Твой Дневник» — или ситуация на рынке электронных дневников
2018-12-30 в 9:09, admin, рубрики: iOS, php, swift, медийная реклама, образование, приложение, Программирование, разработка под iOS, твой дневникВсем привет, пишу свой первый пост. Согласно правилам, его нельзя делать рекламным, поэтому постараюсь вам рассказать чего-нибудь интересного, без ссылок и прочего.
Я достаточно давно интересуюсь моментами, связанными с образованием в нашей стране. В том числе моментами его цифровизации, приведения к какому-то интерактивному, удобному, доступному знаменателю.
Одним из сервисов нашего образования, который даёт универсальный доступ к школьным ресурсам, является электронный дневник.
Я долго смотрел вокруг и мучил себя мыслями о том, что российские школьники не получают доступ к качественному и красивому сервису для просмотра оценок.
Читать полностью »
Замечательная аннотация Version в JPA
2018-12-30 в 8:36, admin, рубрики: Doctrine ORM, hibernate, java, jpa, orm, ПрограммированиеВведение
Итак, начнем! Что же означает аннотация Version в JPA?
Если коротко, то она отвечает за блокировки в JPA. Данная аннотация решает одну из проблем, которые могут возникнуть в результате параллельного выполнения транзакций.
Какие же могут возникнуть проблемы?
- Потерянные обновления могут возникнуть в ситуациях, когда две транзакции, выполняющиеся параллельно, пытаются обновить одни и те же данные.
- Грязные чтения возникают, когда транзакция видит еще не сохранённые изменения, сделанные другой транзакцией. В таких случая может возникнуть проблема из-за отката второй транзакции, но при этом данные уже были прочитаны первой.
- Неповторяемые чтения возникают, когда первая транзакция получила данные, а вторая транзакция внесла в них изменение и успешно закоммитила их, до окончания первой транзакции. Иначе говоря, когда в рамках одной транзакции один и тот же запрос на получение, например всей таблицы, возвращает разные результаты.
- Фантомное чтение — проблема похожая на неповторяемые чтения, за тем исключением, что возвращается разное количество строк.
Коротко о их решениях
- READ UNCOMMITED — решается с помощью аннотации Version в JPA(об этом как раз и статья)
- READ COMMITED — позволяет читать только закоммиченные изменения
- REPEATABLE READ — тут немного посложнее. Наша транзакция «не видит» изменения данных, которые были ею ранее прочитаны, а другие транзакции не могут изменять тех данных, что попали в нашу транзакцию.
- SERIALIZABLE — последовательное выполнение транзакций
Каждый последующий пункт покрывает все предыдущие, иначе говоря может заменить решения, указанные ранее. Таким образом SERIALIZABLE имеет самый высокий уровень изолированности, а READ UNCOMMITED — самый низкий.
Читать полностью »
Так много JDK… Какой использовать и чем это грозит?
2018-12-29 в 10:38, admin, рубрики: java, JDK, oracle, Блог компании Haulmont, ПрограммированиеОт переводчика: Решение перевести эту статью пришло не само собой — скорее это вынужденная мера :). К нам, как к вендорам фреймворка CUBA, обращаются с этим вопросом с завидной регулярностью. Безусловно, для нас это тоже крайне важная тема, и в ответ на последние изменения мы подняли тестовые стенды как на Oracle JDK, так и на OpenJDK — эта мера на данный момент ограждает наших пользователей от непредвиденных лицензионных трат. Однако, эта тема еще не закрыта, и мы продолжаем внимательно следить за развитием событий, и, кто знает, возможно нам придется добавлять стенды для еще каких сборок JDK уже в следующем году...
Статья под катом подкупает тем, что она лаконично описывает проблематику и наиболее популярные JDK с их особенностями.
Семь бесплатных автоматизированных платформ-задачников для прокачки навыков программирования
2018-12-29 в 10:03, admin, рубрики: javascript, python, Блог компании «Hexlet», задачи для программистов, повышение квалификации, Программирование, Учебный процесс в ITПривет! Недавно сделали подборку бесплатных сервисов для изучения программирования с нуля. В комментариях получили много заинтересовавших нас платформ. Из них составили отдельный список таких, которые подойдут профессиональным программистам.
CheckiO
Проект из Украины «Чекио» сфокусирован на Python и JavaScript. Это сборник игровых задач по программированию для тех, кто уже не новичок. Большой упор на геймификацию, симпатичную графику и общение в сообществе. В самом решении задач игрового процесса нет, но есть общий сценарий для прохождения платформы. Полезная фича — смотреть другие решения и подсказывать студентам как их можно улучшить.
leetcode
Сборник задач по программированию на разных языках. Цель сервиса — готовить программистов к заданиям, которые встречаются на интервью. Платформа сразу даёт фидбэк на правильность и эффективность решения, показывает варианты решений и позволяет обсудить их с другими участниками. В платной версии можно пройти автоматизированное интервью в Google, Facebook или Amazon: робот подберёт вопросы, засечёт время и даже поможет оценить.
Операционная система Haiku: портирование приложений и создание пакетов
2018-12-28 в 13:00, admin, рубрики: aaaa, beos, c++, cave story, coolreader, Haiku, haiku-os, HaikuOS, open source, opensource, porting, sdl, sdl2, serious engine, vangers, xash3d, вангеры, Программирование, разработка игр, СофтОсенью этого года, спустя 6 лет разработки, вышла первая бета-версия «R1/beta1» операционной системы Haiku. Я давно слежу за этим интересным проектом, который нацелен на воссоздание и последующее развитие существовавшей в 1994-2000 годах системы BeOS. Поэтому, как только на новостных IT-сайтах я увидел новость о выходе бета-версии Haiku, я незамедлительно решил посмотреть, что же было добавлено в этот долгожданный релиз. После установки системы в виртуальную машину VirtualBox и небольшого ознакомления с её основной функциональностью, я подумал, что было бы неплохо немного помочь OpenSource-сообществу, которое сегодня развивает эту операционную систему. Начать я решил с того, в чём у меня накопился небольшой опыт: с портирования некоторых игровых проектов.
Рабочий стол операционной системы Haiku.
Позже я попытался доработать некоторые уже существующие приложения и библиотеки. Именно этой моей небольшой деятельности в различных репозиториях с открытым исходным кодом и будет посвящена эта статья. В ней я последовательно опишу те проблемы, с которыми столкнулся и расскажу про методы их решения. Большинство патчей, которые были сделаны в процессе этой работы, я попытался отправить в upstream существующих проектов, дабы обеспечить в них поддержку Haiku и заинтересовать их разработчиков существованием альтернативных операционных систем.
Читать полностью »
Пессимизм насчёт многопоточности
2018-12-28 в 12:02, admin, рубрики: SICK-алгоритм, Алгоритмы, аппаратный параллелизм, высокая производительность, закон масштабирования Деннарда, массивный параллелизм, многопоточность, параллельное программирование, параллельные вычисления, Программирование, Процессоры, семантическая локальность, систолическая матрицаМассивный и аппаратный параллелизм — горячие темы 21 века. Для этого есть несколько приятных причин и одна довольно печальная.
Две приятные причины: комбинация отличной работы GPU в играх и при этом их неожиданное побочное использования в глубоком обучении ИИ, поскольку там на аппаратном уровне реализован массивный параллелизм. Печальная причина в том, что скорость однопроцессорных систем с 2006 года упёрлась в законы физики. Нынешние проблемы с утечкой и тепловым пробоем резко ограничивают увеличение тактовой частоты, а классическое снижение напряжения теперь натыкается на серьёзные проблемы с квантовым шумом.
Конкурируя за внимание публики, производители процессоров пытаются впихнуть в каждый чип всё больше процессорных ядер, рекламируя теоретическую общую производительность. Также быстро растут усилия на конвейеризацию и спекулятивные методы выполнения, которые применяют многопоточность под капотом, чтобы видимый программисту одиночный процессор быстрее обрабатывал инструкции.
Читать полностью »
ТОР-10 — чему стоит научиться в 2019
2018-12-28 в 9:32, admin, рубрики: 2019, Блог компании Skillbox, Программирование, учеба, Учебный процесс в IT
От переводчика: публикуем для вас статью профессора Уильяма Бучанана — гика и разработчика. Он рассказывает о десяти главных вещах, которые хотел бы освоить в наступающем 2019 году.
Наша жизнь должна состоять из постоянного движения вперед, изучения нового. Так пусть 2019 год будет годом самосовершенствования и прогресса в этом цифровом мире. Если возможно, пытайтесь избегать поверхностного обучения, лучше заниматься изучением сути вещей. Вот мой собственный список того, что я хотел бы освоить в следующем году.
Читать полностью »
Комплект увольнения
2018-12-28 в 7:26, admin, рубрики: Карьера в IT-индустрии, опыт, Программирование, управление персоналом- Знание ООП и структуры данных;
- опыт разработки на Java для Android.;
- знание Android API, понимание архитектуры Android;
- знание основ HTTP, XML, JSON;
- опыт работы с системами контроля версий Git;
- опыт работы с Android Studio, Gradle;
- опыт работы с SQL базами данных;
- знакомство с принципами Material Design;
Узнали? Конечно, узнали. Это — одно из стандартных резюме программиста.
Лично мне такое резюме напоминает одну песню, а точнее одну строку этой песни: «Жигули! Едет и уже хорошо!».
Еще напоминает рекламу тех же Жигулей, где наличие ABS, датчиков дождя и света и т.д. выдается за конкурентное преимущество. Ну и лозунг знаменитый: «Таким и должен быть автомобиль!».
А программист таким и должен быть? Если хочет быть, как жигули – массовым, дешевым и «как бы и не машиной программистом», то да.
Но мы не такие, поэтому будем формировать и формулировать свое конкурентное преимущество – комплект увольнения.
Комплект увольнения – то, что остается с вами, когда вы меняете место работы. Как пел Юрий Шевчук, «Это то, что останется после меня. Это то, что возьму я с собой».Читать полностью »