Search
Write a publication
Pull to refresh
56
0
Илья @WST

Инженер-программист

Send message

Аудио плеер на AVR

Reading time19 min
Views18K


Во время очередной ревизии радиоэлектронного барахла и распихивания по коробочкам мне попался контроллер AVR atxmega256a3u. Дабы развеять скуку было решено сделать некое подобие звуковой карты, а точнее ЦАП, подключаемый к компьютеру. Что из этого получилось смотрите под катом.
Читать дальше →

Полезные трюки PostgreSQL

Reading time3 min
Views203K


В мануале есть всё. Но чтобы его целиком прочитать и осознать, можно потратить годы. Поэтому один из самых эффективных методов обучения новым возможностям Postgres — это посмотреть, как делают коллеги. На конкретных примерах. Эта статья может быть интересна тем, кто хочет глубже использовать возможности postgres или рассматривает переход на эту СУБД.
Читать дальше →

Библиотека для работы с cookies (tasty-cookies)

Reading time2 min
Views9.7K
История старая, я так думаю, все помнят window.cookie = '...' (а может кто этим пользуется), жутко неудобная штука.

Приведу пример на нативном js:

// Добавление печенья
function setCookie(key, value) {
  window.cookie = key + '=' + encodeURIComponent(JSON.stringify(value));
}

// Получение печенья
function getCookie(key) {
  var matches = document.cookie.match(new RegExp(
    '(?:^|; )' + key.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + '=([^;]*)'
  ));
  return JSON.parse(decodeURIComponent(matches[1]));
}

// Добавляем строку
setCookie('string', 'Моя строка');
// Добавляю объект
setCookie('object', {a: 1, b: 2});

// Получаю объект
var object = getCookie('object');

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

Опьяняющая сила Composer Plugins

Reading time6 min
Views12K
Composer — это самый важный инструмент в наборе современного PHP-разработчика. Времена ручного управления зависимостями остались в далеком прошлом, и их место заняли такие замечательные вещи как Semver. Вещи, которые помогают нам спать по ночам, ведь мы можем обновлять наши зависимости не обрушивая все вокруг.
neanderthal smashing rocks

Хоть мы и используем Composer довольно часто, не все знают о том, как расширить его возможности. Такая мысль даже не возникает, ведь он и так делает свою работу хорошо по-умолчанию, и кажется, что это не стоит времени или усилий, чтобы попытаться или хотя бы изучить. Даже в официальной документации обходят стороной этот вопрос. Наверное, потому что никто не спрашивает…

Однако, недавние изменения сделали разработку плагинов для Composer намного легче. Сам же Composer также недавно перешел из альфа-версии в бету, пожалуй, это самый консервативный цикл релизов из когда-либо задуманных. Этот инструмент, который изменил современный PHP-мир, сделал его таким, каким мы видим его сейчас. Этот краеугольный камень профессиональной разработки PHP. Он просто перешел из альфы в бету.

Итак, сегодня я подумал, что мне бы хотелось исследовать возможности composer-плагинов, и по ходу дела создать немного свежей документации.

Вы можете найти код этого плагина на Github.
Читать дальше →

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

Reading time6 min
Views27K
threads

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

Нейронные сети научились окрашивать черно-белые фото

Reading time2 min
Views38K
Одним из наиболее интересных направлений для изучения в ИТ-сфере являются нейронные сети. Их возможности поражают. Не так давно корпорация Google демонстрировала психоделические изображения, созданные ИИ DeepDream на основе реальных фотографий. Некоторые из сгенерированных изображений просто пугают.


Одно из таких изображений (попробовать сделать собственное можно здесь)

Но нейронные сети могут работать и в более спокойном режиме. Например, делать цветными черно-белые снимки. Для того, чтобы научить систему это делать, исследователи обучают ее, демонстрируя большое количество различных фотографий. Нейронная сеть выбирает с цветных снимков те объекты, что схожи с объектами на черно-белых снимках, и разукрашивает последние. Сейчас такой проект разрабатывается исследователями из Калифорнийского университета в Беркли.
Читать дальше →

Чтение больших объемов данных в Python/Postgresql

Reading time3 min
Views27K
Стек рассматриваемых технологий: Postgresql 9.3, Python 2.7 с установленным модулем «psycopg2».

Проблема


Как часто в вашей практике приходилось сталкиваться с задачей обработки таблиц большого объема (более 10 млн. записей)? Думаю вы согласитесь, что данная задача является довольно ресурсоемкой как в плане времени обработки, так и задействованных ресурсов системы. Сегодня я постараюсь показать альтернативный способ решения задачи.

Предложение:


В СУБД Postgresql есть прекрасный оператор для работы с большими объемами информации, а именно «COPY». Применение данного оператора позволяет нам читать и записывать огромные объемы информации в таблицу. В данной статье мы будем рассматривать режим чтения.

Согласно документации оператора «COPY» нам доступны несколько режимов чтения в файл либо в поток STDOUT, а также различные форматы, в том числе и «csv». Как раз его мы и постараемся использовать с максимальной пользой.
Читать дальше →

Rust в деталях, часть 2

Reading time27 min
Views15K

Часть 2: Отправка и получение сообщений


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

Вторая часть является прямым продолжением первой, поэтому если вы ее пропустили (или забыли контекст), то рекомендую сначала ознакомиться с ней. В этой части мы продолжаем реализацию протокола WebSocket.
Читать дальше →

Первые люди могли встречать единорогов – правда, не совсем таких, как вы подумали

Reading time2 min
Views17K
image

Окаменевшие останки древнего млекопитающего Elasmotherium sibiricum (эласмотерий) были обнаружены на берегу Иртыша возле поселка Кожамжар в Павлодарской области биологами из Томского государственного университета. Его отличительной особенностью был единственный длинный толстый рог. По строению его челюстей и зубов учёным ясно, что эласмотерий питался подземными частями растений – клубнями и луковицами.

Типовой вид эласмотерия, Elasmotherium sibiricum, был описан ещё Фишером фон Вальдгеймом в 1808 году. Он происходит из раннего-среднего плейстоцена Украины, Поволжья, Заволжья, Предуралья, Узбекистана, Сибири, Казахстана, Китая. Вероятно, был покрыт шерстью, поскольку входит в состав хазарской фауны, существовавшей в эпоху максимального оледенения.
Читать дальше →

Безумная термитная пушка для тех, кому мало бытового огнемёта (16+)

Reading time1 min
Views39K


Год назад на Indiegogo феерически прошёл сбор средств на производство портативного огнемёта, который бьёт на 8 метров. Отлично подходит для розжига костра и уничтожения паразитов (в смысле, насекомых).

Огнемёт уже поступил в продажу, и теперь у любителей фейерверков появился новый кумир. Британский инженер, изобретатель и блогер Колин Фёрз (Colin Furze) изготовил в своём сарае термитный гранатомёт в стиле стимпанк! Этот гаджет впечатляет ещё больше, чем огнемёт. «Пушка» стреляет снарядами с термитной смесью, сгорающей при температуре 2300-2700ºC.
Читать дальше →

Легенда о международном авось

Reading time11 min
Views16K
Признанный мастер бэкапа — ящерица. Отбросив свой хвост при форс-мажорных обстоятельствах, вскоре она отращивает новый. Это эволюционно заложено природой и не требует от земноводного особых усилий. Отдельные явления восстановления органов или клеток встречаются и у других животных, в том числе у homo sapiens. Однако сегодня ситуация поменялась и у человека, в отличие от ящерицы, появилась ещё одна значимая ценность — информация, а именно данные, которые он бережно собрал, накопил, и… А вот что происходит с ними дальше, зависит от того, насколько homo соответствует званию sapiens. Как вы уже догадались, соответствуют не все. Не даром же придуман World Backup Day, который празднуется как раз сегодня.

Итоги конкурса внутри!
Читать дальше →

Зловред-вымогатель “Petya” шифрует весь жесткий диск и требует денег

Reading time3 min
Views28K
Приветствуем вас на страницах блога iCover! Возможно онлайн-экспозиция музея вирусов The Malware Museum, где собраны необычные и запомнившиеся пользователям зловреды, вскоре пополнится еще одним любопытным экспонатом. Создатели трояна Petya (Петя) действуют по классической схеме: шифруют данные пользователя и требуют выкуп за ключ для разблокировки. Но, имеет “Троян Win32.Trojan-Ransom.Petya.A” и кое-что, в корне отличающее его от среднестатистических вымогателей-шифровальщиков — Locky, CryptoWall, TeslaCrypt ..., его авторы не ограничились кодировкой отдельных категорий файлов — документов, фото- или видео-архивов, зловред шифрует диск с данными полностью.

image
Подробнее

Загадочная Планета Икс могла быть захвачена Солнцем из другой звёздной системы

Reading time2 min
Views10K
image

В работе "Есть ли в Солнечной системе экзопланета?", опубликованной 24 марта на сайте arxiv.org, астрономы из Лундского университета (Швеция) и лаборатории обсерватории Бордо (Франция) численно подтвердили возможность того, что 9-я планета, существование которой косвенно подтверждают некоторые наблюдения, могла быть захвачена из окружающего пространства гравитацией Солнца.

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

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

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

Reading time3 min
Views126K
"The joy of coding Python should be in seeing short, concise, readable classes that express a lot of action in a small amount of clear code — not in reams of trivial code that bores the reader to death."
Guido van Rossum

Python — язык программирования, на котором приятно писать и который приятно читать. Мы предлагаем тринадцать лекций осеннего курса CS центра, чтобы посмотреть вглубь языка и попробовать понять, как пользоваться всеми его возможностями. Лекции читает Сергей Лебедев, разработчик в компании JetBrains и преподаватель в Computer Science Center.

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

Фотография сделана осенью 2014 года в Страсбурге, за две недели до начала первого прочтения этого курса.
Открыть лекции курса

Монолитные репозитории в Git

Reading time8 min
Views45K
Многие выбрали Git за его гибкость: в частности, модель веток и слияний позволяют эффективно децентрализовать разработку. В большинстве случаев эта гибкость является плюсом, однако некоторые сценарии поддержаны не так элегантно. Один из них — это использование Git для больших монолитных репозиториев — монорепозиториев. Эта статья исследует проблемы монорепозиториев в Git и предлагает способы их смягчения.

Скала Улуру
Скала Улуру в Австралии как пример монолита — КДПВ, не более

Что такое монорепозиторий?


Определения разнятся, но мы будем считать репозиторий монолитным при выполнении следующих условий:
  • Репозиторий содержит более одного логического проекта (например, iOS-клиент и веб-приложение)
  • Эти проекты могут быть не связаны, слабо связаны или связаны сторонними средствами (например, через систему управления зависимостями)
  • Репозиторий большой во многих смыслах:
    • По количеству коммитов
    • По количеству веток и/или тегов
    • По количеству файлов
    • По размеру содержимого (то есть размеру папки .git)
Читать дальше →

NPM и left-pad: мы разучились программировать?

Reading time4 min
Views112K
Автор — Дэвид Хейни (David Haney), ведущий инженер-программист Stack Overflow

Итак, разработчики, время для серьёзного разговора. Вы уже наверное в курсе, что на этой неделе React, Babel и куча других популярных пакетов на NPM сломались. Причина довольно удивительная.

Простой пакет NPM под названием left-pad был установлен как зависимость в React, Babel и других пакетах. Модуль, который на момент написания этого поста, имеет 11 звёзд на Github (сейчас 323 — прим.пер). Весь пакет состоит из 11 простых строчек, которые реализуют примитивную функцию вставки пробелов в левой части строк. Если какие-то из ссылок когда-нибудь умрут, вот его код:

module.exports = leftpad;
function leftpad (str, len, ch) {
  str = String(str);
  var i = -1;
  if (!ch && ch !== 0) ch = ' ';
  len = len - str.length;
  while (++i < len) {
    str = ch + str;
  }
  return str;
}
Что меня беспокоит, так это такое большое количество пакетов, где установлена зависимость от простой функции набивки строки пробелами, вместо того чтобы потратить 2 минуты и написать эту базовую функцию самому.
Читать дальше →

Уличная грязь и симуляция движения пешеходов

Reading time7 min
Views61K
С приходом весны и дождей на улице в глаза все чаще бросается одна проблема. Вот эта:



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

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

Шел я как-то по дорожке и вяло размышлял на тему того, что опять придется или тащиться в обход, или пачкать обувь. С возмущения типа «вот же дураки это проектируют» мысль плавно перетекла на слышанную когда-то байку про некий наукоград, где дорожки во дворах сперва не сделали вовсе, а потом просто заасфальтировали протоптанные людьми тропинки, получив сеть удобных жителям маршрутов. А оттуда мысль перекочевала к идее «а почему бы не сделать то же самое, но на компьютере?». Разработать программу, которая по заданной карте предскажет, где люди будут топтать газоны и где неплохо бы сделать асфальтовое покрытие?

Под катом — описание алгоритма и пара примеров его работы для реальных питерских дворов.
Читать дальше →

Laravel TestTools — запись тестов для Laravel прямо из браузера Chrome

Reading time1 min
Views12K
Вчера Marcel Pociot представил новое расширение для браузера Chrome «Laravel TestTools», которое позволяет «записывать» действия пользователя при создании тестов для Laravel.

Вот как это выглядит:

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

Решето под названием Adobe Flash

Reading time7 min
Views22K
Пока еще широко распространенный продукт Flash Player компании Adobe печально известен своей безопасностью. Регулярно становится известно об очередной zero-day уязвимости во Flash, используемой хакерами в APT-кампаниях. 2015 год выдался особенно урожайным на такие уязвимости. Большая доля критических RCE-уязвимостей были вызваны некорректной работой с памятью: была возможна запись в освобожденную память в куче процесса Flash.

В этой статье мы поисследовали безопасность Adobe Flash и выяснили, что многие его «дыры в безопасности» — хронические, и решить их можно разве что переписыванием кода с нуля, в то время как разработчики ставят заплатку на заплатку, что, конечно, не повышает уровень безопасности. А еще мы продемонстрируем некоторые найденные нами и незакрытые на данный момент уязвимости!
Читать дальше →

Information

Rating
Does not participate
Location
Красногвардейское, Адыгея, Россия
Date of birth
Registered
Activity