Обновить
1008.97

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

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

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

Huginn: простая интеграционная платформа

Время на прочтение4 мин
Количество просмотров14K
В мире API, сервисных архитектур и облачных решений многое доступно вообще без программирования. Однако, компании все еще тратят драгоценное время разработчиков на рутинные задачи по интеграции. Мы хотим рассказать об одной из платформ, которая позволяет нам подключить новомодный маркетинговый сервис или проверить гипотезу максимально быстро и без участия разработки.

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

Типизированные компоненты в Vue.js, или как подружить Vue, TypeScript и Webpack

Время на прочтение4 мин
Количество просмотров40K

Речь в данной статье пойдет о довольно необычном сочетании технологий: Vue.js + TypeScript + Webpack, в разрезе single-file компонентов. Решение данной задачи отняло у меня приличное количество времени с первого захода, поскольку исчерпывающее объяснение того, как использовать все это вместе, да и еще с рядом ограничений (NPM предоставляет нам runtime-only build Vue.js), найти в цельном виде практически невозможно. Если вас заинтересовала данная тема, то приглашаю к дальнейшему чтению.
Читать дальше →

Нативные EcmaScript модули: новые возможности и отличия от webpack

Время на прочтение13 мин
Количество просмотров17K

image


В предыдущей статье Нативные ECMAScript модули — первый обзор я рассказал историю JavaScript модулей и текущее состояние дел реализации нативных EcmaScript модулей.


Сейчас доступны две реализации, которые мы попробуем сравнить с бандлерами модулей.

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

Несколько слов про «наш» микроконтроллер

Время на прочтение7 мин
Количество просмотров38K

В статье речь пойдёт про отечественный МК фирмы Миландр 1886ВЕ5У, будет совсем немного кода и много нытья.

Данный МК построен на ядре PIC17, что заметно при разработке — так как у меня уже есть солидная кодовая база для PIC, мне было чуть проще начать. Также под данный МК можно приобрести отладочную плату — о ней я тоже пару слов напишу.

Я расскажу с какими проблемами столкнулся при разработке прошивки, что понравилось, а что не очень. Всё написанное — моё личное субъективное мнение, потому, сразу оговорюсь, возможно будут описаны проблемы, которые и не проблемы вовсе, а совсем даже особенности и которых можно было бы избежать, обладай я большим опытом разработки.

Итак, поехали.
Читать дальше →

«Сломай голосовалку на РИТ++». Даёшь 1 000 000 RPS

Время на прочтение5 мин
Количество просмотров9.7K


Прошёл второй день РИТ++, и по горячим следам мы хотим рассказать о том, как всем миром пытались сломать нашу голосовалку. Под катом — код, метрики, имена победителей и самых активных участников, и прочие грязные подробности.

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

Понимание событийной архитектуры Node.js

Время на прочтение11 мин
Количество просмотров41K


Большинство Node-объектов — вроде HTTP-запросов, ответов и потоков (streams) — реализуют модуль EventEmitter, благодаря которому они могут генерировать и прослушивать события.


const EventEmitter = require('events')

Простейшая форма управления по событиям — это callback-стиль некоторых популярных Node.js-функций, к примеру fs.readFile. По этой аналогии событие генерируется однократно (когда Node готов к вызову коллбэка), а коллбэк действует как обработчик события. Давайте сначала разберём эту базовую форму событийно-управляемой архитектуры.

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

Лучшие доклады на конференции United Dev Conf 2017

Время на прочтение5 мин
Количество просмотров2.4K
В апреле в Минске прошла большая IT-конференция United Dev Conf, организованная Frontend Dev Conf, Highload Dev Conf и Mobicode.

Нам предложили вдохновится опытом, найти новых друзей и бизнес-партнеров, узнать последние новости и тенденции, и просто насладится общением в кругу единомышленников. Как можно было отказаться от такого предложения? Поэтому мы отправились в столицу нашего северного соседа.

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

Конференция проходила в четыре потока: Frontend, Highload, Mobile и Sales. Её посетили около 700 участников, и 40 докладчиков делились своим опытом. А в перерывах компании-спонсоры разыгрывали квадрокоптеры, куда ж без них на IT-ивенте.

Нам, как фронтенд-разработчикам, в первую очередь был интересен Frontend-поток, собственно его мы и посетили в эти два дня. Все доклады были интересными, но мы выбрали самые интересные, на наш взгляд.
Читать дальше →

Текстовый онлайн с фестиваля РИТ++ 2017. День второй

Время на прочтение1 мин
Количество просмотров2.5K

Трансляция второго дня окончена. РИТ++ был невероятно крутым!

Сегодня в этом посте весь день будет вестись текстовая трансляция фестиваля РИТ++ 2017, проходящего в Сколково 5 и 6 июня.

Если вы хотите смотреть видео из главного зала и включения из мобильной студии Хабрахабра, то вам на страницу видео трансляции. Если почитать онлайн и поообщаться в кооментариях — под кат.


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

Как настроить простую систему автотестов без Java и Selenium

Время на прочтение4 мин
Количество просмотров32K
Представьте: вы работник стартапа, сварганили по-быстрому прототип и постепенно начинаете его развивать. И вот вам уже хочется, чтобы во время очередного спешного релиза не приходилось перепроверять все разделы сайта вручную (руками директора по продукту). Конечно, можно нанять отдельного тестировщика, но на это в вашем LEAN-стартапе бюджета не дают — «лучше давайте купим наконец-то кофе-машину». Знакомо?

И тут кто-то произносит слово «автотесты».

И сразу начинается: это целая история, это очень сложно, это очень дорого, от этого будет больше вреда, чем пользы и вообще это кровавый Enterprise и СЕЛЕНИУМ.

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

Почему не работает Tree Shaking и как с этим жить

Время на прочтение3 мин
Количество просмотров16K

В нашей предыдущей статье про голосовых ботов для Рокетбанка хабраюзеры возмутились, что в 2017 году примеры JavaScript для облака Voximplant написаны на ES5. У нас в облаке сильно модифицированный SpiderMonkey, специально обученный не течь и не падать. Тысячи одновременных звонков с параллельно выполняемым JavaScript как бы намекают, что нода – для нас не вариант. Тем не менее, никто не мешает использовать транспайлеры, компилировать ES2017/TypeScript/Elm/Whatever в старый добрый JavaScript и загружать результаты компиляции с помощью Continuous Integration. При таком раскладе возникает соблазн использовать все последние достижения из npmjs, собирая весь код в один ES5 бандл. И вот тут нас ждет засада: даже один метод из lodash дает на выходе бандл размером в полмегабайта. И не похоже, чтобы рекламируемый последние пару лет tree shaking работал.
Кто виноват и что делать?

Итоги половины дня! Сломай голосовалку на РИТ++ за 50 наклеек. День два

Время на прочтение2 мин
Количество просмотров13K
UPD 6 июня, 13:00 Промежуточные итоги половины дня (играем до 18.00)

TOP25
{ _id: 'burik666@...', count: 577979174 },
{ _id: 'ivan@...', count: 513559731 },
{ _id: 'alarkin@...', count: 222891322 },
{ _id: 'i@...', count: 216486374 },
{ _id: 'odn@...', count: 145072331 },
{ _id: 'A1977494@...', count: 55572517 },
{ _id: 'elena@...', count: 44642302 },
{ _id: 'hack@...', count: 15686298 },
{ _id: 'alexey.tsikov@...', count: 12685075 },
{ _id: 'minkin.andrew@...', count: 8200540 },
{ _id: 'perminoff@...', count: 5428646 },
{ _id: '256@...', count: 5030088 },
{ _id: 'v@...', count: 2163356 },
{ _id: 'pen<ОЙ>is@...', count: 2100855 },
{ _id: 'lebedevcommerical@...', count: 1605961 },
{ _id: 'serg_sokolov@...', count: 1600238 },
{ _id: 'msalnikov@...', count: 1499220 },
{ _id: 'ghostlyfox@...', count: 1473142 },
{ _id: 'alex21021991@...', count: 1437472 },
{ _id: 'nikita.shapovalov@...', count: 1007977 },
{ _id: 'evgen300@...', count: 652291 },
{ _id: 'malchenko.dmitriy.by@...', count: 611410 },
{ _id: 'dzmitry_t@...', count: 279287 },
{ _id: 'maniaque.ru@...', count: 262446 },
{ _id: 'e.tabatsky@...', count: 190766 }


UPD 6 июня, 12:40

361K RPS Голосуй за свой ЯП? #ritfest2017 high load голосование https://t.co/CbbDhHJKNj @IngramCloud pic.twitter.com/mT6jfI9L4G

— Alex Hayorov (@hayorov) June 6, 2017

6 июня, 10:00
Сегодня второй день! Мы добавили мощностей и немного изменили дизайн, теперь вы можете видеть топ-5 голосующих.



Приходите на наш стенд рядом с конгресс-холлом.
Читать дальше →

Динамическое подключение внешних собственных модулей и плагинов в Gradle

Время на прочтение3 мин
Количество просмотров7.5K

Преамбула


Есть своя «внешняя» библиотека и есть своё приложение, использующее эту библиотеку (подгружается через внешний репозитарий). Требуется внести изменение и в библиотеку и в приложение.

Казалось бы, собери библиотеку и выложи её в локальный maven-репозитарий, а потом уже собирай приложение. Но хочется, чтобы можно было поправив код в библиотеке сразу попробовать изменения в приложении и при этом сохранить раздельное хранение кода библиотеки и приложения, включая настройки IDE и прочее.

С помощью gradle и символических связей в файловой системе такое можно легко устроить.
Читать дальше →

Текстовый онлайн с фестиваля РИТ++ 2017. День первый

Время на прочтение1 мин
Количество просмотров5.9K


Второй день здесь


Сегодня в этом посте весь день будет вестись текстовая трансляция фестиваля РИТ++ 2017, проходящей в Сколково 5 и 6 июня. РИТ++ — это целый ряд профессиональных узкотематических конференций: системное администрирование и эксплуатация, высоконагруженные системы и базы данных, серверное программирование, управление проектами и предпринимательство, enterprise-конференция, а также фронтенд и мобильная разработка.

Если вы хотите смотреть видео из главного зала и включения из мобильной студии Хабрахабра, то вам на страницу видео трансляции. Если почитать онлайн и поообщаться в комментариях — под кат.


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

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

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

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

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

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

Когда 2 + 2 = «4»

Время на прочтение3 мин
Количество просмотров20K
Во время отдыха от отладки JavaScript, я читал статью про особенности PHP и неожиданно задумался каковы же будут результаты сравнения 2 + 2 = «4» для разных языков программирования. И вот что из этого получилось.
Итоговая таблица для тех кто не хочет много читать
Результат Ошибка компиляции False True
Языки C++
Pascal
FORTRAN-95
Java
C#
Go
Rust
Haskel
C
Lisp
Python
Lua
Ruby
JavaScript
PHP
Perl

Компилятор C выдаёт предупреждение, компилятор C++ ошибку которая превращается в предупреждение если указать флаг -fpermissive.

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

Бонусом — функции вывода на консоль для этих языков.
Читать дальше →

3 cпособа нарушить Single Responsibility Principle

Время на прочтение5 мин
Количество просмотров27K
Single Responsibility Principe достаточно прост для понимания и его несложно придерживаться.
Но в работе я достаточно часто сталкиваюсь с нарушением этого принципа. В этой статье я собрал самые больные из тех способов нарушить SPR, что я встречал.
Читать дальше →

Синхронизация структуры базы данных между приложениями

Время на прочтение9 мин
Количество просмотров11K

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

Чаще всего используется простой подход — создание набора SQL-скриптов для модификации структуры БД от версии к версии. Конечно, есть такой мощный инструмент, как Red gate, но он во-первых небесплатный, во-вторых не решает проблему полной автоматизации обновления.


Технология migrations, впервые появившаяся в ОРМ Hibernate и реализованная в Linq, очень хороша и удобна, но подразумевает стратегию разработки структуры БД code first, что весьма трудоемко для уже существующих проектов, а использование в БД триггеров, хранимых процедур и функций делает задачу перехода на code first практически невыполнимой.


В данной статье предлагается альтернативный подход к решению этой задачи, использующий хранение эталонной структуры БД в XML-файле и автоматическую генерацию SQL-скрипта на основе сравнения эталонной и существующей структуры. Итак, начнем...

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

Как обучать вычислительному мышлению?

Время на прочтение35 мин
Количество просмотров22K

Перевод поста Стивена Вольфрама (Stephen Wolfram) "How to Teach Computational Thinking".
Выражаю огромную благодарность Полине Сологуб за помощь в переводе и подготовке публикации



Содержание


Вычислительное будущее
Что такое вычислительное мышление?
Знакомство с Wolfram Language
А что насчет…
Основы
Куда может вписаться вычислительное мышление?
Что дети могут делать?
Во главе с детьми
Что такое вычисления и программирование?
Как все это будет происходить?


Вычислительное будущее


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

Поиск по дереву методом Монте-Карло и крестики-нолики

Время на прочтение4 мин
Количество просмотров18K

Так вышло, что для получение автомата по программированию бедным первокурам задали одну интересную задачу: написать программу, которая ищет по дереву методом Монте-Карло.


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

Kotlin, компиляция в байткод и производительность (часть 2)

Время на прочтение11 мин
Количество просмотров26K


Это продолжение публикации. Первую часть можно посмотреть тут

Содержание:


Циклы
When
Делегаты
Object и companion object
lateinit свойства
coroutines
Выводы
Читать дальше →

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