Сообщество Rust в последнее время сконцентрировало много своих усилий на
асинхронном вводе/выводе, реализованном в виде библиотеки Tokio.
И это замечательно.
Многим из участников сообщества, тем, которые не работали с веб-серверами и
связанными с этим вещами, не ясно, чего же мы хотим добиться. Когда эти
вещи обсуждались во времена версии 1.0, я тоже имел смутное представление об
этом, никогда прежде не работав с этим раньше.
Что это такое — Async I/O?
Что такое корутины (coroutines)?
Что такое легковесные нити (threads)?
Что такое футуры? (futures)?
Как они сочетаются между собой?
Рассмотрим модели многопоточности на примере Rust и Go.
DeepHack.Babel — уже пятый хакатон серии DeepHack, который организует Лаборатория нейронных систем и глубокого обучения МФТИ. В этом году темой хакатона выбран машинный перевод. Акцент будет сделан на нейронный машинный перевод, набирающий популярность в исследовательском сообществе и уже использующийся в коммерческих продуктах. В отличие от традиционного статистического метода, в его основе лежит использование искусственных нейронных сетей, что позволяет достичь более высокого качества перевода. Нейронный машинный перевод уже используют сервисы перевода таких компаний, как Google, Яндекс и Майкрософт.
Программа конференции InoThings++ охватывает все аспекты мира интернета вещей: разработку аппаратного и программного обеспечения устройств, безопасность для пользователей, способы передачи информации между устройствами и сервером и их тестирование, эксплуатацию и изменение бизнес-процессов под влиянием IoT-технологий.
30 января пройдет вторая встреча формата Founders talk, на которой основатели IT-стартапов поделятся кейсами использования инструмента постановки гипотез HADI для роста продаж, привлечения клиентов и увеличения прибыли.
Свежая подборка со ссылками на новости и материалы. В выпуске: новый стандарт PSR-15, WordPress на .NET, порция полезных инструментов, и многое другое.
Приятного чтения!
Прямо сейчас в арт-галерее «Дар» (Псков) работает выставка, озвученная при помощи программы на языке Chuck. Я попытаюсь рассказать, почему и как все это получилось. Читать дальше ->
Редко кто из экспертов, специализирующихся на тестировании защищенности, сталкивался с ситуацией, когда не смог полностью скомпрометировать сеть в ходе внутреннего тестирования на проникновение. Причем причины успехов этичных хакеров банальны: слабые пароли, отсутствие критичных обновлений безопасности, ошибки конфигурации. Возникает вопрос: если причины незащищенности такие тривиальные, можно ли разработать перечень ключевых проверок, которые мог бы провести системный администратор самостоятельно и есть ли единый инструмент, позволяющий это реализовать? Попробуем разобраться.
Конференция DevFest North впервые состоялась в Питере в сентябре 2017.
Мы успели получить множество фидбеков, выложили фотографии и видео докладов.
Настало время подвести итоги всех итогов. Читать дальше ->
В этой статье я хочу рассказать как накручиваются счетчики посещений на сайтах, подделываются демография, местоположение и другие параметры мониторинговых сервисов.
Базовая графика в R плоха для печати (если честно, можно было получше выбрать значения по умолчанию). В целом, эти функции для некоторых — признак заката эры R. Думаю, большинство людей согласится, что есть в R графические функции и получше (например, ggplot2). Но иногда бывет целесообразно сделать график именно с помощью базовых функций. Например, если графика в вашей публикации должна быть воспроизводима даже спустя пять лет.
В этом посте рассмотрим методы, позволяющие кардинально изменить внешний вид базовой графики в R. С некоторыми (окей, иногда большими) усилиями можно изменить все параметры графика именно так, как вам нужно. Читать дальше ->
Второго октября 2015-го года мне в личку хабра пришло сообщение от старого дружани — Эмиля Гарипова — с предложением освещать подготовку его и ещё трёх коллег к сдаче CCIE на нашем сайте linkmeup.
linkmeup открытый. Я очень быстро понял, что идея может выгореть только если сделать из подготовки шоу. Знаете, вроде «CCIE за стеклом» или «Пусть лабят с Эмилем Гариповы». Выкладывать прогресс, материалы, лабы, личные переживания. Приглашать к совместным размышлениям.
Иначе никто не будет этого даже читать, и писать будет Эмиль в стол.
Именно с такими вводными 12 ноября состоялась первая ключевая встреча экспертов: Эмиль Гарипов и Наташа Самойленко.
Изначально проект PUBG (просим прощения у оригинальной PUBG за использование их аббревиатуры, мы всего лишь хотим использовать эту игру для развития навыков программирования и не планируем публиковать ее в Steam в будущем) был разработан как внутренний проект нашей студии для развлечения. Затем же мы подумали, что он может быть полезен другим студиям, компаниям и образовательным учреждениям, и опубликовали его под лицензией MIT. Читать дальше ->
В каких ситуациях удобно применять предобученные модели машинного обучения внутри ClickHouse? Почему для такой задачи лучше всего подходит метод CatBoost? Не так давно мы провели встречу, посвящённую одновременному использованию этих двух опенсорс-технологий. На встрече выступил разработчик Николай Кочетов — его лекцией мы и решили с вами поделиться. Николай разбирает описанную задачу на примере алгоритма предсказания вероятности покупки.
— Сначала о том, как устроен ClickHouse. ClickHouse — это аналитическая распределенная СУБД. Она столбцовая и с открытым исходным кодом. Самое интересное слово здесь — «столбцовая». Что оно значит? Читать дальше ->
На этой неделе в интересных статьях у нас мобильные облака, энергетический органайзер Xcode, стоимость разработки игр и мобильные устройства изнутри, «код с 9 до 5» и многое другое!
Когда на IT-форумах задают вопрос «Быстрее ли язык программирования X языка Y», это обычно вызывает потоки эмоций и считается некорректным. С родни вопросу про религию или предпочтение той или иной политической партии. Действительно, язык — это способ выражения мысли, идеи. В данном случае идеи программной системы. Он не быстр и не медлен. Он может быть более или менее лаконичным, более или менее точным. А скорость определяется не столько языком, сколько конечным кодом, который генерирует компилятор этого языка. Или скоростью интерпретатора в случае интерпретируемого языка.
Но это всё философия. А на практике обычно есть практическая задача разработки ПО. И, действительно, реализовать это ПО можно на десятке разных языков программирования. Поэтому, хоть это и «религиозный вопрос» в случае публичного обсуждения, вопрос этот часто возникает в голове IT-специалиста, стоящего перед конкретной задачей. «Сколько времени мне потребуется для реализации задачи на языке X и какие у полученного ПО будут характеристики, в том числе скоростные. По сравнению с реализацией этой задачи на языке Y». Понятное дело, точного ответа на этот вопрос нет, специалист опирается на свой личный опыт и отвечает как-то типа «с вероятностью 95%, написанная на ассемблере, эта задача будет работать быстрее, чем на php». Но, положа руку на сердце, опыт этот редко базируется на точных цифрах реальных задач, которые сам этот специалист реализовал. Нет, ну кто в здравом уме будет писать сложное ПО сначала на php, а потом его же переписывать на ассемблере, только чтобы измерить характеристики? В основном ограничиваются синтетическими тестами типа сортировки массива, построения и обхода бинарного дерева и тому подобных. Читать дальше →
Сегодня мы решили подготовить для вас обзор свежих новостей о суперкомпьютерах. Под катом расскажем о мощнейшем промышленном суперкомпьютере и самом производительном суперкомпьютере Германии, а также о том, как ученые из Лос-Аламосской национальной лаборатории сэкономили 2 миллиона долларов при построении HPC-системы.
Это последняя из пяти частей туториала, посвящённого созданию игр с помощью Python 3 и PyGame. В четвёртой части мы научились распознавать коллизии, реагировать на то, что мяч сталкивается с разными игровыми объектами и создали игровое меню с собственными кнопками.
В последней части мы рассмотрим различные темы: конец игры, управление жизнями и очками, звуковые эффекты, музыку и даже гибкую систему спецэффектов. На десерт мы рассмотрим возможные улучшения и направления дальнейшего развития. Читать дальше ->
"Теория «разбитых» предупреждений" — это вымышленная теория, утверждающая что попустительство команды по отношению к мелким предупреждениям, таким как «несоответствие со знаком или без», «оператор перед запятой не имеет результата», «использовано нестандартное расширение» и т.п., непосредственно провоцирует разработчиков на попустительство к аналогичным или более серьёзным предупреждениям. Психологический механизм такой провокации на бытовом уровне иллюстрируется фразой: «Если другим можно, то почему нельзя мне?» — когда программист видит, что предупреждения в коде других разработчиков не чинятся, он перестаёт считать правила (причём не только те, нарушения которых он наблюдал, но и любые другие) обязательными для себя. При этом условная средняя планка «допустимого предупреждения» в команде постоянно понижается, рано или поздно приводя к увеличению числа уже серьёзных багов.
И наоборот, активная работа по предотвращению мелких (даже самых малозначительных) предупреждений в коде и наказанию авторов этого кода (так называемая нулевая терпимость) создаёт атмосферу нетерпимости к предупреждениям в целом, а сама деятельность по пресечению мелких предупреждений позволяет «попутно» обучать и существенно ограничивать в возможностях рецидивистов, обычно пренебрегающих правилами команды. Читать дальше ->
Гостиничный (отельный) модуль АТС 3CX разработан специально для использования бизнес-телефонии в предприятиях сферы гостеприимства: отелях, лечебных учреждениях, курортах и т.п. Модуль предлагается бесплатно и интегрирован в редакции 3CX Pro и Enterprise. Доступны следующие возможности:
Фиксация заселения и выезда гостя (через интерфейс веб-клиента 3CX или внешнюю PMS-систему).
Установка телефона в номере отеля в Do not Disturb (Не беспокоить).
Блокирование внешних вызовов с телефона, когда номер не занят.
Установка статуса номера (убран, не убран и т.п.) с клавиатуры телефона (обычно используется обслуживающим персоналом).
Гостиничный модуль 3CX может интегрироваться с различными PMS-системами: Micros Fidelio, Roommaster, Hilton и т.п. При этом используется протокол интеграции, совместимый с протоколами Fidelio или Mitel. После интеграции PMS-система может удаленно управлять большинством функций модуля. Читать дальше ->
В этой статье я расскажу о своем маленьком открытии, которое в корне перевернуло мой взгляд на вопрос подбора персонала.
Как утверждал Стив Джобс, разница между средним и лучшим среди рабочих профессий составляет в среднем 2/1. К примеру, лучший кассир сможет работать в два раза быстрее, чем средний. В свое время Джобс обнаружил, что среди разработчиков как программного, так и аппаратного обеспечения, «разница между средним и лучшим 50/1, а может и 100/1».
Джобс сказал: «Это встречается крайне редко, но мне повезло посвятить жизнь именно этому». Это было его открытием, одним из ключей к сегодняшнему величию Apple. Читать дальше ->
Классу Optional посвящено немало статей и tutorials, в том числе этот и этот на Хабре.
Большинство из них рассказывают как вызываются методы этого класса. Я в этом tutorial делаю упор на то зачем, почему, в каких случаях можно (а скорее даже нужно) применять тот или иной метод класса. Я думаю, это очень важно, ибо как показал опрос после первой статьи этого tutorial, далеко не все Java — программисты вошли во вкус использования всей мощи методов этого класса.
Для лучшего объяснения методов класса я буду использовать более сложные и наглядные примеры, чем в большинстве других tutotials — кофеварку, фильтрационную установку, миксер и т.д.
В этой статье мы рассмотрим все методы класса в том виде, как их предоставляет Java 8. Расширения класса в Java 9 мы рассмотрим в следующей статье этой серии. Читать дальше ->