Search
Write a publication
Pull to refresh
35
0
Send message

Несколько интересностей и полезностей для веб-разработчика #42

Reading time6 min
Views37K
Доброго времени суток, уважаемые хабравчане. За последнее время я увидел несколько интересных и полезных инструментов/библиотек/событий, которыми хочу поделиться с Хабром.

Webtorrent




Полноценный торрент клиент для NodeJS и браузеров. Стримминг будет работать прямо в браузере благодаря WebRTC (data chanels) для P2P транспортировки. А самое главное «It's Just JavaScript™», то есть не нужны никакие дополнительные плагины или расширения. Проект собрал более 3000 звезд на GitHub и на данный момент предоставляет следующие возможности: непосредственно саму потоковую передача данных, загрузка нескольких торрентов одновременно, поддержку magnet uri, peer discovery и protocol extension api, возможность подключения WebTorrent клиентов на разных доменах, стримминг видео в <video> тег в формате (webm (vp8, vp9) или mp4 (h.264)), а также в AirPlay, Chromecast, VLC player и прочие устройства.

var WebTorrent = require('webtorrent')

var client = new WebTorrent()
var magnetUri = '...'

client.add(magnetUri, function (torrent) {
  // Got torrent metadata!
  console.log('Torrent info hash:', torrent.infoHash)

  torrent.files.forEach(function (file) {
    // Get a url for each file
    file.getBlobURL(function (err, url) {
      if (err) throw err

      // Add a link to the page
      var a = document.createElement('a')
      a.download = file.name
      a.href = url
      a.textContent = 'Download ' + file.name
      document.body.appendChild(a)
    })
  })
})

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

Железячники vs. Программисты

Reading time9 min
Views45K
imageВсем привет!

Я — один из основателей открытого проекта Embox, и по совместительству являюсь генеральным директором компании ООО “Ембокс”. Как не трудно догадаться, её основная цель — это оказание коммерческих услуг на базе нашего проекта.

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

Эта статья первая в нашем блоге, и мне кажется, что будет уместно рассказать не столько о технических решениях и находках, которые мы применяем в нашем проекте, это, безусловно, будет в последующих статьях, а сделать своего рода статью-приветствие. И поскольку Embox — операционная система для встраиваемых решений, речь в статье пойдет прежде всего о сфере embedded systems. По сути дела, в статье я хочу поделиться своим представлением о возможном направлении развития встраиваемого ПО, конечно, подкреплять всё это я буду реальными ситуациями, с которыми мы сталкивались в процессе работы над проектом. Поэтому те, кто интересуется встраиваемыми системами и кому не лень прочитать пару страниц жалоб на трудное детство рассуждений, прошу под кат.
Читать дальше →

RefluxJS — альтернативный взгляд на Flux архитектуру от Facebook

Reading time15 min
Views30K
От переводчика: посмотрев на ReactJS и вдохновившись его простотой, начал искать библиотеку, которая бы обеспечивала такой же простой обмен данными внутри моего приложения. Наткнулся на Flux, увидел примеры кода и пошел искать альтернативу. Набрел на RefluxJS, немедленно полюбил и пошел переводить официальную доку. Она написана как раз в стиле статьи, поэтому в первую очередь решил поделиться ей с Хабрасообществом. Перевод несколько вольный. Кое-где, если мне казалось, что что-то нуждается в дополнительном пояснении или примере, я не стеснялся.

В переводе ниже в качестве перевода для термина Action из Reflux иногда используется термин «событие», а иногда — термин «экшен», в зависимости от контекста. Более удачного перевода мне подобрать не удалось. Если у вас есть варианты, жду предложений в комментариях.

Обзор


image image image image image

RefluxJS — простая библиотека, обеспечивающая в вашем приложении однонаправленный поток данных, использующая концепцию Flux от Facebook.
Читать дальше →

Леденец из мороженого, или как привнести в ваше приложение немного Material

Reading time7 min
Views20K
Пятая версия Android была выпущена почти полгода назад. Несмотря на это, большинство приложений в маркете до сих пор упорствуют в стиле Holo. То ли новый Material-стиль пока не по зубам среднему разработчику, то ли Android L еще не успел прочно войти в обыденность.

Как бы там ни было, новая парадигма дизайна активно пропагандируется «корпорацией добра», да и выглядит достаточно неплохо, несмотря на некоторую непоследовательность. И все больше появляется добрых волшебников, помогающих нам, простым разработчикам, оставаться «в струе» изменчивого мира мобильного UI.

Если вы, как я недавно, твердо решили обернуть своё, давно не обновлявшееся, приложение в новую «шкурку», этот обзор инструментов и библиотек может сэкономить вам N часов времени.

Осторожно, мало картинок!

(Перевод) Введение в разработку C++ в UE4

Reading time11 min
Views180K
Часть 1. Введение. Создание класса и добавление свойств. Расширение класса С++ с помощью Blueprint.
Часть 2. Классы геймплея. Структуры. Отражение (reflection) в Unreal. Object/Actor итераторы. Менеджер памяти и сборщик мусора.
Часть 3. Префиксы в именах классов. Целочисленные типы. Типы контейнеров. Итераторы контейнеров. Цикл For-each, хеш-функции.
Часть 4. Бонусная. Unreal Engine 4 для Unity разработчиков.

image

Эта статья является переводом части документации по UE4. Оригинальную статью вы можете найти пройдя по это ссылке.
Далее

Несколько интересностей и полезностей для веб-разработчика #41

Reading time5 min
Views39K
Доброго времени суток, уважаемые хабравчане. За последнее время я увидел несколько интересных и полезных инструментов/библиотек/событий, которыми хочу поделиться с Хабром.

Learn X in Y minutes




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

Кстати, еще есть Hyperpolyglot, где наглядно показаны различия между инструментами и языками программирования в таблицах.
Читать дальше →

Бесплатная онлайн школа Android-разработчиков

Reading time2 min
Views89K


Первый Android телефон T-Mobile G1 был представлен в октябре 2008, а сейчас уже насчитывается более 1 миллиарда активных пользователей платформы по всему миру. По статистике 1,5 миллионов Android-устройств активируется каждый день. Приложения и разработчики являются основной составляющей Android экосистемы, поэтому для нас задача обучения и помощи разработчикам является одной из самых приоритетных.

Сегодня компании e-Legion и Google совместно запускают первую онлайн школу мобильных Android–разработчиков.

Начиная с 2011 года компания-разработчик мобильных приложений e-Legion организовывала бесплатные оффлайн школы мобильных разработчиков. Первой стала iOS-школа, которая собрала больше 200 заявок и выпустила 12 студентов осенью 2011 года. Потом были школы мобильных разработчиков под Windows Phone и Android. С каждым анонсом на Хабре нас ждал вопрос о том, будет ли запись лекций и можно ли поучаствовать тем, кто живет не в Питере. Каждый раз мы отвечали что-то из серии «скоро все будет». И вот, наконец-то, это «скоро» наступило. Мы решили создать школу, в которую сможет поступить желающий из любого города и которую можно пройти дистанционно.
Хочу участвовать

Лекции Технопарка. Геймдизайн от идеи до релиза

Reading time32 min
Views68K


Этот пост, как нетрудно догадаться, посвящен геймдизайну и разработке игр. Раньше я делал клиентские и браузерные игры, в том числе экшн Panzar. В Mail.Ru Group занимаюсь разработкой мобильных игр. Эта публикация задумана мной как некий мастер-класс по мотивам выступления в Технопарке, на котором я поделился своим опытом организации процесса построения геймдизайна. Несмотря на то, что часть материала в этой статье более актуальна для крупных компаний, я постарался учесть особенности проработки игрового дизайна в небольших студиях и начинающих командах разработки.
Читать дальше →

Почему от 3D болит голова / Часть 1: Недостатки оборудования

Reading time17 min
Views56K


Вопрос, почему у людей болит голова от 3D, очень мифологизирован. Журналисты повторяют друг за другом моменты, которые, в общем-то, важны, но важность которых находится на 10-м месте, а про совершенно вопиющие вещи типа кратной экономии на оборудовании кинотеатров или про массовые феерические ошибки на съемках и post-production практически все молчат. При этом очень многие проблемы, если задаться целью, можно легко увидеть, что называется, невооруженным взглядом, если знать, куда смотреть и воспользоваться относительно несложными скриптами. Часть проблем обнаружить сложнее, но после того, как они найдены — «насладиться» ими также несложно. Характерный пример — это перепутанные ракурсы (правый перепутан с левым). Развенчанию мифов, а также реальным проблемам, их причинам и в той или иной степени способам их исправления и будет посвящен цикл статей «Почему от 3D болит голова».
Читать дальше →

Как легко расшифровать TLS-трафик от браузера в Wireshark

Reading time2 min
Views167K
Многим из вас знаком Wireshark — анализатор трафика, который помогает понять работу сети, диагностировать проблемы, и вообще умеет кучу вещей.

image

Одна из проблем с тем, как работает Wireshark, заключается в невозможности легко проанализировать зашифрованный трафик, вроде TLS. Раньше вы могли указать Wireshark приватные ключи, если они у вас были, и расшифровывать трафик на лету, но это работало только в том случае, если использовался исключительно RSA. Эта функциональность сломалась из-за того, что люди начали продвигать совершенную прямую секретность (Perfect Forward Secrecy), и приватного ключа стало недостаточно, чтобы получить сессионный ключ, который используется для расшифровки данных. Вторая проблема заключается в том, что приватный ключ не должен или не может быть выгружен с клиента, сервера или HSM (Hardware Security Module), в котором находится. Из-за этого, мне приходилось прибегать к сомнительным ухищрениям с расшифровкой трафика через man-in-the-middle (например, через sslstrip).

Логгирование сессионных ключей спешит на помощь!


Что ж, друзья, сегодня я вам расскажу о способе проще! Оказалось, что Firefox и Development-версия Chrome поддерживают логгирование симметричных сессионных ключей, которые используются для зашифровки трафика, в файл. Вы можете указать этот файл в Wireshark, и (вуаля!) трафик расшифровался. Давайте-ка настроим это дело.
Читать дальше →

Если вы решили перейти с PHP на Python, то к чему следует подготовиться

Reading time14 min
Views192K
Думали ли вы когда-нибудь о том, что однажды слишком быстро втянулись в веб-программирование на PHP? И вот уже прошло много лет, у вас хороший опыт, и вы не думаете ни о каких других способах „делать“ веб, кроме как на PHP. Может быть, у вас возникают сомнения в правильности выбора, однако непонятно, как найти способ быстро его проверить. А хочется примеров, хочется знать, как изменятся конкретные аспекты деятельности.

Сегодня я попробую ответить на вопрос: «А что если вместо PHP писать на Python?».

Сам я долгое время задавался этим вопросом. Я писал на PHP 11 лет и даже являюсь сертифицированным специалистом. Я научился его «готовить» так, чтобы он работал в точности, как мне надо. И когда я в очередной раз читал на Хабре перевод статьи о том, как всё в PHP плохо, я просто недоумевал. Однако подвернулся случай пересесть на Ruby, а потом и на Python. На последнем я и остановился, и теперь попробую рассказать вам PHP-шникам, как нам питонистам живётся.


Python с точки зрения PHP-программиста...

Lock-free структуры данных. Concurrent maps: skip list

Reading time6 min
Views32K

В предыдущих статьях (раз, два) мы рассматривали классический hash map с хеш-таблицей и списком коллизий. Был построен lock-free ordered list, который послужил нам основой для lock-free hash map.
К сожалению, списки характеризуются линейной сложностью поиска O(N), где N — число элементов в списке, так что наш алгоритм lock-free ordered list сам по себе представляет небольшой интерес при больших N.
Или все же представляет?..
Читать дальше →

10 самых распространённых ошибок, которые делают новички в Java

Reading time14 min
Views107K
Здравствуйте, меня зовут Александр Акбашев, я Lead QA Engineer в проекте Skyforge. А также по совместительству ассистент tully в Технопарке на курсе «Углубленное программирование на Java». Наш курс идет во втором семестре Технопарка, и мы получаем студентов, прошедших курсы по C++ и Python. Поэтому я давно хотел подготовить материал, посвященный самым распространенным ошибкам новичков в Java. К сожалению, написать такую статью я так и не собрался. К счастью, такую статью написал наш соотечественник — Михаил Селиванов, правда, на английском. Ниже представлен перевод данной статьи с небольшими комментариями. По всем замечаниям, связанным с переводом, прошу писать в личные сообщения.



Изначально язык Java создавался для интерактивного телевидения, однако со временем стал использоваться везде, где только можно. Его разработчики руководствовались принципами объектно-ориентированного программирования, отказавшись от излишней сложности, свойственной тем же С и С++. Платформонезависимость виртуальной машины Java сформировала в своё время новый подход к программированию. Добавьте к этому плавную кривую обучения и лозунг «Напиши однажды, запускай везде», что почти всегда соответствует истине. Но всё-таки ошибки до сих пор встречаются, и здесь я хотел бы разобрать наиболее распространённые из них.
Читать дальше →

Загрузочный сервер — как загрузочная флешка, только сервер и по сети

Reading time12 min
Views464K
Загрузочная флешка с набором нужного софта — замечательный инструмент системного администратора. Казалось бы, что может быть лучше? А лучше может быть загрузочный сервер!

Представьте, вы выбрали в BIOS загрузку по сети и можете установить ОС/вылечить компьютер от вирусов/реанимировать диски/протестировать ОЗУ/etc с PXE Boot сервера, ведь это куда удобнее, нежели бегать с флешкой от машины к машине.
А в случае большого компьютерного парка, такой инструмент и вовсе незаменим.

Вот такое меню встречает нашу команду инженеров при загрузке с PXE



Под катом вас ждет описание всех настроек, а так же небольшой сюрприз.
Поехали!

Указатели, ссылки и массивы в C и C++: точки над i

Reading time10 min
Views632K
В этом посте я постараюсь окончательно разобрать такие тонкие понятия в C и C++, как указатели, ссылки и массивы. В частности, я отвечу на вопрос, так являются массивы C указателями или нет.

Обозначения и предположения


  • Я буду предполагать, что читатель понимает, что, например, в C++ есть ссылки, а в C — нет, поэтому я не буду постоянно напоминать, о каком именно языке (C/C++ или именно C++) я сейчас говорю, читатель поймёт это из контекста;
  • Также, я предполагаю, что читатель уже знает C и C++ на базовом уровне и знает, к примеру, синтаксис объявления ссылки. В этом посте я буду заниматься именно дотошным разбором мелочей;
  • Буду обозначать типы так, как выглядело бы объявление переменной TYPE соответствующего типа. Например, тип «массив длины 2 int'ов» я буду обозначать как int TYPE[2];
  • Я буду предполагать, что мы в основном имеем дело с обычными типами данных, такими как int TYPE, int *TYPE и т. д., для которых операции =, &, * и другие не переопределены и обозначают обычные вещи;
  • «Объект» всегда будет означать «всё, что не ссылка», а не «экземпляр класса»;
  • Везде, за исключением специально оговоренных случаев, подразумеваются C89 и C++98.


Указатели и ссылки


Указатели. Что такое указатели, я рассказывать не буду. :) Будем считать, что вы это знаете. Напомню лишь следующие вещи (все примеры кода предполагаются находящимися внутри какой-нибудь функции, например, main):

int x;
int *y = &x; // От любой переменной можно взять адрес при помощи операции взятия адреса "&". Эта операция возвращает указатель
int z = *y; // Указатель можно разыменовать при помощи операции разыменовывания "*". Это операция возвращает тот объект, на который указывает указатель

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

300 потрясающих бесплатных сервисов

Reading time11 min
Views1.6M


Автор оригинальной статьи Ali Mese добавил ещё 100 новых бесплатных сервисов. Все 400 потрясающих сервисов доступны здесь. И еще подборку +500 инструментов от 10 марта 2017 г. смотрите здесь.



A. Бесплатные Веб-Сайты + Логотипы + Хостинг + Выставление Счета

  • HTML5 UP: Адаптивные шаблоны HTML5 и CSS3.
  • Bootswatch: Бесплатные темы для Bootstrap.
  • Templated: Коллекция 845 бесплатных шаблонов CSS и HTML5.
  • Wordpress.org | Wordpress.com: Бесплатное создание веб-сайта.
  • Strikingly.com Domain: Конструктор веб-сайтов.
  • Logaster: Онлайн генератор логотипов и элементов фирменного стиля (new).
  • Withoomph: Мгновенное создание логотипов (англ.).
  • Hipster Logo Generator: Генератор хипстерских логотипов.
  • Squarespace Free Logo: Можно скачать бесплатную версию в маленьком разрешении.
  • Invoice to me: Бесплатный генератор счета.
  • Free Invoice Generator: Альтернативный бесплатный генератор счета.
  • Slimvoice: Невероятно простой счет.

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

Расшифровываем формулу Хабра-рейтинга или восстановление функциональных зависимостей по эмпирическим данным

Reading time6 min
Views23K
Если вы когда-нибудь читали раздел помощь на Хабре, то наверняка видели там прелюбопытнейшую строчку:
Допустим, вы написали публикацию с рейтингом +100 — это добавило к вашему персональному рейтингу величину Х. Через несколько десятков дней этот самый Х вычтется, тем самым вернув вас на прежнее место.
то наверняка задавались вопросом, что это за Х и с какого он района чему он равен?

Сегодня мы ответим на этот вопрос.


(измеряем Хабра-рейтинг в попугаях)

Структура статьи


  1. Аналитический вывод
  2. Регрессия
  3. Исключения
  4. Устойчивая регрессия
  5. Скрипт и данные
  6. Почему скрывать функцию бесполезно
  7. Что с этим можно сделать?
  8. Интерпретация формулы
Читать дальше →

STM32 и FreeRTOS. 1. Развлечение с потоками

Reading time7 min
Views161K
Данный цикл из 5 статей рассчитан на тех, кому стало мало возможностей привычных «тинек» и ардуинок, но все попытки перейти на более мощные контроллеры оканчивались неудачей или не приносили столько удовольствия, сколько могли бы. Все ниженаписанное проговаривалось мной много раз на «ликбезе» программистов нашей студии (которые часто сознавались, что переход с «тинек» на «стмки» открывает столько возможностей, что попадаешь в ступор, не зная за что хвататься), поэтому смею надеяться, что польза будет всем. При прочтении подразумевается, что читающий — человек любопытный и сам смог найти и поставить Keil, STM32Cube и понажимать кнопки «ОК». Для практики я использую оценочную плату STM32F3DISCOVERY, ибо она дешевая, на ней стоит мощный процессор и есть куча светодиодиков.

Каждая статья рассчитана на «повторение» и «осмысление» где-то на один околовечерний час, ибо дом, семья или отдых…



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

PostgreSQL vs MySQL

Reading time8 min
Views348K


В преддверии своего доклада на конференции PGCONF.RUSSIA 2015 я поделюсь некоторыми наблюдениями о важных различиях между СУБД MySQL и PostgreSQL. Этот материал будет полезен всем тем, кого уже не устраивают возможности и особенности MySQL, а также тем, кто делает первые шаги в Postgres. Конечно, не стоит рассматривать этот пост как исчерпывающий список различий, но для принятия решения в пользу той или иной СУБД его будет вполне достаточно.
Читать дальше →

Предупреждён — значит, вооружён. Часть 2

Reading time9 min
Views77K


Чем больше народа, тем меньше кислорода




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

Концентрацию углекислого газа измеряют в пропромиллях — частей на миллион ppm (ppmv), миллиграммах на кубический метр или процентах.

Чтобы “поплавать” в значениях концентрации углекислого газа, можно почитать любую статью по обеспечению воздухообмена, пример “Сколько воздуха нужно человеку для комфорта?”

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

Поговорка про количество народа/кислорода актуальна при нахождении людей в закрытом помещении — они поглощают кислород, а выделяют углекислый газ и другие вещества. Поэтому необходимо осуществлять контроль над содержанием углекислого газа в каждом помещении, где находятся люди.
Смотрите далее: вентиляция, старые окна, вред собраний, сравнение половинок

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity