Обновить
1045.75

Программирование *

Искусство создания компьютерных программ

Сначала показывать
Порог рейтинга
Уровень сложности

Очень легкая система мониторинга с Телеграмом и Консулом

Время на прочтение4 мин
Охват и читатели14K


Всем счастья и добра!


Эволюционно так получилось, что в моем личном владении оказался не маленький зоопарк различных серверов: от дешевого Supermicro до топового (на момент выпуска) HP Gen 8. Все конечно связано оптикой и прочими радостями жизни.


Но сказ не про то, как сеть класть, и даже не про то, как сервера настраивать, а про то, как правильно просто на всем этом деле docker-compose сервисы поднимать и радоваться.

Читать дальше →

Программирование ≠ информатика

Время на прочтение8 мин
Охват и читатели26K
Разработка программного обеспечения как будто в худшую сторону отличается от других дисциплин информатики.

Несколько лет назад я изучал алгоритмы и сложность. Восхитительно чистая область, где каждая концепция чётко определена, каждый результат построен на предыдущих доказательствах. Когда узнаёшь факт в этой области, ты можешь на него положиться, поскольку сама математика вывела его. Даже у несовершенных результатов, как приближение и вероятностные алгоритмы, есть строгий анализ их несовершенства. Другие дисциплины информатики, вроде сетевой топологии и криптографии, имеют такой же удовлетворительный статус.

А теперь я работаю с разработкой ПО, и это невыносимо скользкая тема. Ни одна концепция точно не определена. Результаты оцениваются с характеристиками «обычно» или «в целом». Сегодняшние исследования могут или не могут помочь завтрашней работе. Новые подходы часто опровергают предыдущие методы, а сами ярко горят недолгое время, а потом выходят из моды, когда всплывают их ограничения. Мы верили в структурное программирование. Затем начали верить в языки четвёртого поколения, потом в объектно-ориентированные методы, потом в экстремальное программирование, а теперь, может быть, в open source.
Читать дальше →

Три закона конфигодинамики

Время на прочтение7 мин
Охват и читатели9.6K

Галактика Андромеды


В статье под катом мы поговорим о том, как бороться с энтропией в конфигурационных файлах.

Читать дальше →

Предупреждён — значит, интеллектуальный обзвон

Время на прочтение3 мин
Охват и читатели12K


Клиент что-то заказал и ждёт, когда ему это привезут? День доставки заранее согласован? Значит, курьер может выезжать? Увы, нет. Рейд курьера может быть бессмыслен и бесполезен, потому что клиент… только что вышел в магазин, застрял в пробке, сидит на совещании, заснул, ушел с ребенком на детскую площадку – и ещё 1000 и одна причина, почему не сейчас. Как плохой футболист, которому внезапно дали пас. И, чтобы передача состоялась, надо как-то проверить, удобно ли клиенту, и не будет ли курьер мотаться почём зря. В компания СДЭК задумались, как это сделать, и при помощи Voximplant нашли для себя оптимальное решение, о котором – под катом.

Ограничения глубинного обучения и будущее

Время на прочтение19 мин
Охват и читатели23K
Эта статья представляет собой адаптацию разделов 2 и 3 из главы 9 моей книги «Глубинное обучение с Python» (Manning Publications).

Статья рассчитана на людей, у которых уже есть значительный опыт работы с глубинным обучением (например, тех, кто уже прочитал главы 1-8 этой книги). Предполагается наличие большого количества знаний.



Ограничения глубинного обучения


Глубинное обучение: геометрический вид


Самая удивительная вещь в глубинном обучении — то, насколько оно простое. Десять лет назад никто не мог представить, каких потрясающих результатов мы достигнем в проблемах машинного восприятия, используя простые параметрические модели, обученные с градиентным спуском. Теперь выходит, что нужны всего лишь достаточно большие параметрические модели, обученные на достаточно большом количестве образцов. Как сказал однажды Фейнман о Вселенной: «Она не сложная, её просто много».
Читать дальше →

Взгляд снизу вверх или Ubuntu Server для разработчика электроники. Часть 1

Время на прочтение3 мин
Охват и читатели7.4K
При решении задач электроники все методы хороши, если они устраивают ТЗ, бюджет и разработчика. Linux был мне неизвестен, но вместе с задачами, которые решаешь, растешь и сам. Этот пост расскажет о том, как применить компьютер с Ubuntu для связи большого компьютера с контроллером в соответствии со схемой:

Статья описывает практику применения описанной техники и не ставит целью охватить все глубины и возможности современной аппаратуры. Это один из вариантов решения поставленной задачи.
Мне интересно

Laracon 2017 — краткий обзор и куча полезных ссылок

Время на прочтение11 мин
Охват и читатели9.5K

laracon-2017


Я побывал первый раз на конференции Laracon лично и, должен сказать, я получил там весьма приятный опыт — возможно, даже более приятный, чем я ожидал. Конференция была хорошо организована и доклады были разнообразными, информативными и действенными. Первый день был посвящен техническим вопросам и в основном вращался вокруг Laravel. Второй день был разбавлен выступлениями на самые разные темы, довольно занимательными и заставляющими задуматься.

Читать дальше →

Red Architecture — красная кнопка помощи для сложных и запутанных систем — часть 3 (многопоточность нам в помощь)

Время на прочтение14 мин
Охват и читатели2K
Заключительную часть описания Red Architecture посвятим многопоточности. Ради справедливости стоит сказать, что начальный вариант класса v нельзя считать оптимальным, так как в нём ничего нет для решения одной из главных проблем к которой неминуемо приходят разработчики real world приложений. Для полного понимания текущей статьи необходимо познакомиться с концепцией Red Architecture здесь.

Red Architecture

Забегая вперёд скажу, что нам удастся решить все проблемы многопоточности не выходя за пределы класса v. Причём изменений будет гораздо меньше чем могло показаться, и в итоге код класса v с полностью решёнными проблемами многопоточности будет состоять из немногим более 50 строк! Причём эти 50 с небольшим строк будут более оптимальны, чем вариант класса v, описанный в первой части. При этом конкретный код, решающий проблемы синхронизации потоков займёт всего лишь 20 строк!
Читать дальше →

Контейнеры быстрого развёртывания

Время на прочтение4 мин
Охват и читатели9.1K
Тот самый момент, когда даже Флэш может позавидовать разработчикам. Ровно неделю назад у нас вышел крутой анонс о новой службе экземпляров контейнеров Azure (Azure Container Instances, ACI), которая максимально упрощает развёртывание контейнеров. Это первая в мире облачная служба такого рода. Ниже я хочу рассказать вам подробнее, что она из себя представляет и как с ней можно работать.


Читать дальше →

JetBrains MPS для интересующихся #3

Время на прочтение7 мин
Охват и читатели4.2K

Бинго-бонго и Джимбо-джамбо, дорогие друзья!


У меня на дачке не было света 2 дня, я практически иссох и впал в спячку, но я снова здесь! В этом посте мы начнем писать предсказания погоды и немного напишем кода, а не потыкаем мышкой! Ура! Наконец-то!


Какие прогнозы мы хотим делать


Очень простые! Пока прогнозировать будем только следующий день, а правила придумаем сами; а точнее, правил не будет. Мы просто будем выводить температуру на следующий день, абсолютно такую же, как и сегодня. Сделаем один прикольчик, демонстрирующий возможности projectional editor.


Концепты


В данном случае мы прибегнем к крутой фиче — мы создадим концепт, который будет содержать только ссылку на исходные данные, а данные мы будем выводить как график на своем Swing компоненте. О как умеем, хотя swing я жуть как не люблю.


image

Читать дальше →

Работа с сервлетами для чайников. GET / POST

Время на прочтение8 мин
Охват и читатели106K


В прошлой статье Создание сервлетов для чайников. Пошаговое руководство я описал, как создать сервлеты и попытался объяснить, как это работает. В этой статье мы научим наши сервлеты работать с UI через HTTP-запросы GET и POST.

На самом деле, этих запросов намного больше, но для чистоты эксперимента мы разберём только два основных.

  • GET — обрабатывает адресную строку, которая получается при вызове сервлета. Например, site.com/example?action=test&id=10&admin=true
  • POST — обрабатывает загруженный контент (картинку, файл, строки, объектные данные), в общем, всё, что можно передать через HTTP

В Java-сервлете запросы POST и GET обрабатывают соответствующие методы doPost(); и doGet().
Читать дальше →

Как отрефакторить 2 500 000 строк кода и не сойти с ума

Время на прочтение1 мин
Охват и читатели11K

5 июня 2017 года на РИТ я рассказал доклад про то, как мы рефакторим свое огромное клиентское приложение на 2 500 000 строк кода.


Недавно я получил запись выступления. Думаю, что это видео может быть кому-то полезно, поэтому я попросил у Олега Бунина разрешение на то, чтобы выложить его в открытый доступ. Он согласился. Надеюсь, вам будет интересно. В любом случае буду рад любым комментариям.


P.S.: Заранее прошу прощение за качество видео. К сожалению, ничего с этим поделать не могу.


В разрезе: новостной агрегатор на Android с бэкендом. Система сборки

Время на прочтение5 мин
Охват и читатели2.4K
Вводная часть (со ссылками на все статьи)

Лет 10-15 назад, когда программы состояли из исходников и небольшого количества двоичных файлов с работой по сборке итоговых программ отлично справлялись всевозможные «?make». Однако сейчас современные программы и подходы к разработке сильно изменились – это:
множество различных файлов (не считаю исходников) – стили, шаблоны, ресурсы, конфигурации, скрипты, бинарные данные и.т.д;

  • предпроцессоры;
  • системы проверки стиля исходников или всего проекта (lint, checkstyle и т.д.);
  • методики разработки, основанные на тестах, с их запуском при сборке;
  • различного типа стенды;
  • системы развёртывания на базе облачных технологий и т.д. и.т.п.
Читать дальше →

Ближайшие события

GeekUniversity открывает набор студентов на факультет Python-разработки

Время на прочтение1 мин
Охват и читатели14K


В нашем онлайн-университете для программистов открылся новый факультет. Теперь в GeekUniversity студенты смогут освоить Python-разработку на Middle-уровне и гарантированно начать карьеру сразу после обучения.


GeekUniversity — совместный образовательный проект Mail.Ru Group и IT-портала GeekBrains. Программу обучения и спецкурсы для факультета разрабатывают Avito, Альфа-банк, МТС, Тинькофф, DeliveryClub.

Читать дальше →

В разрезе: новостной агрегатор на Android с бэкендом. Система контроля версий

Время на прочтение4 мин
Охват и читатели2.5K
Вводная часть (со ссылками на все статьи)

Когда я выделил необходимое время для написания статьи об опыте использования системы контроля версий, я переговорил с несколькими людьми занимающимися разработкой (новичками и профессионалами) о системах контроля версий – плюсы и минусы использования, особенности их систем, сценарии использования. Разговор всегда начинался примерно одинаково: каждый считал, что может ответить на все мои вопросы и поделиться своим опытом, однако заканчивался разговор по-разному: кто-то прямо говорил, что в тонкостях не специалист, кто-то говорил, что это мне не понадобится – отсюда можно сделать вывод, что системы контроля версий не настолько простой инструмент совместной работы как многие о нём думают.
Читать дальше →

В разрезе: новостной агрегатор на Android с бэкендом. Вводная часть, идея, технологии

Время на прочтение2 мин
Охват и читатели6.2K
Так сложилось, что работу, которая мне нравилась и которую, как мне кажется, я делал хорошо, мне пришлось сменить на более стабильную и прибыльную, но уже не такую интересную – работу линейного менеджера в подразделении информатизации в крупном банке. Сказать, что эта работа полная противоположность прежней сложно, но в ней нет, того, что было в разработке: драйва, необходимость решения сложных задач, изучения новых технологий, что тут говорить – не было даже английского языка (знание которого терять не хотелось). Откровенно говоря, несмотря на заявляемую гибкость и передовые технологи, во многих банках царит IT-совок и ручной труд.

Время шло, а вместе с ним приходило понимание, что дальнейшая работа в рамках только текущей должности не только сузит мой кругозор, но и лишит каких-либо конкурентных возможностей на рынке труда. Сторонние подработки в качестве программиста не давали необходимого системного подхода.

В связи с этим было принято решение об изучении новых технологий в области разработки на базе небольшого домашнего проекта (вычитываемые из книг и интернета знания без опыта применения улетучивались очень и очень быстро). Необходимые знания были, время выделить для своего развития я мог всегда.

В качестве проекта была выбрана идея реализации новостного агрегатора (с клиентом на Android) и его серверной стороны для сбора, обработки, хранения и представления данных.
Читать дальше →

Почему Node.js в качестве основы фронтенда – это круто [обновлено]

Время на прочтение6 мин
Охват и читатели47K


Накануне запуска школы Node.js от Яндекс.Денег я хотел бы рассказать чуть больше о том, почему именно эта платформа прижилась в нашем фронтенде.


Несколько лет назад в Яндекс.Деньгах назрела смена платформы для серверной прослойки фронтенда: имевшаяся была внутренней проприетарной разработкой и постепенно умирала от слабой поддержки и проседания скорости работы. Вместе с медленной работой в рантайме и отсутствием развития XSLT, на котором работало API, этот «черный ящик» с множеством ограничений настала пора заменить.


Под «фронтендом» мы понимаем не только выполняемый в браузере код, но и серверную прослойку по сбору данных и генерации HTML. Хорошей заменой для имевшейся логики стал Node.js.

Читать дальше →

Как Chrome и Firefox договариваются о передаче двух видеопотоков

Время на прочтение4 мин
Охват и читатели9.6K

Среди подводных камней WebRTC один особенный. Это то, как браузеры договариваются между собой о передаче медиа-потоков. Кодеки, битрейты, разрешение видео, – вся вот эта история. Кода медиа-поток один — все хорошо. Но когда их два (а видео со звуком, это, на секундочку, два медиа-потока: один для видео, другой для звука), то мнения браузеров о формате описания ситуации резко разделяются. Сделать видеозвонок из Chrome в Firefox можно довольно легко. А вот видеозвонок со звуком — уже нет. Под катом небольшая история, почему так повелось, что запилили в новой Safari и какой особый путь у Microsoft Edge.

Граббер для одного книжного сайта

Время на прочтение4 мин
Охват и читатели29K

В один прекрасный день я решил написать grabber для книжного сайта и теперь хочу поделиться с вами тонкостями реализации такого рода программных решений. Вся информация представлена исключительно для ознакомительных целей

Читать дальше →

Pygest #14. Релизы, статьи, интересные проекты из мира Python [18 июля 2017 — 31 июля 2017]

Время на прочтение2 мин
Охват и читатели6.3K
image Всем привет! Это уже четырнадцатый выпуск дайджеста на Хабрахабр о новостях из мира Python.

В сегодняшнем выпуске вы найдёте интересные материалы, касающиеся рефакторинга и тестирования, Docker, фреймворков и многого другого. Присылайте свои актуальные материалы, а также любые замечания и предложения, которые будут добавлены в ближайший дайджест.

А теперь к делу!
Перейти к дайджесту

Вклад авторов