Search
Write a publication
Pull to refresh
1
0
Олексій @Assada

User

Send message

Сделано в МТИ: система контроля версий Gitless

Reading time4 min
Views36K

Все вы знаете систему Git. Хотя бы слышали — это наверняка. Разработчики, которые пользуются системой, ее или любят, или ругают за сложный интерфейс и баги. Система управления версиями Git де-факто является стандартом в индустрии. У разработчика могут быть мнения о преимуществах Mercurial, но чаще всего приходится мириться с требованием уметь пользоваться Git. Как у любой сложной системы, у нее множество полезных и необходимых функций. Однако, до гениальной простоты добираются не все, поэтому существующая реализация оставляла пространство для совершенствования.

Простыми словами — мудреным приложением было трудно пользоваться. Поэтому в лаборатории Массачусетского Технологического Института взялись за улучшения и отсекли все «проблемные элементы» (ведь то, что для одного проблема, для другого легко может быть преимуществом). Улучшенную и упрощенную версию назвали Gitless. Её разрабатывали с учетом 2400 вопросов, связанных с Git и взятых с сайта разработчиков StackOverflow.

Команда авторов вычленила самые проблемные места в Git, включая две концепции staging и stashing. Затем они предложили изменения, призванные решить известные проблемы.
Читать дальше →

Генерируем красивые картинки для социальных сетей

Reading time7 min
Views17K


Код для генерирования именно этого изображения
$generator = new imgGenerator();
$textGenerator=new imgTextGenerator();
$textGeneratorTop=new imgTextGenerator();

$label=$textGeneratorTop
	->seTextShadow("#000000", 75, 1, 2, 2)
	->setText("Test Site","#ffffff",imgGenerator::position_center_top,"1/12",0 )
	->setBackground("#000000",'3%')
	->setFont($_SERVER["DOCUMENT_ROOT"]."/upload/fonts/fonts2_7/hinted-PTF55F.ttf");

$text=$textGenerator
	->seTextShadow("#000000", 75, 1, 2, 2)
	->setText("Морковь как двигатель прогресса человечества","#ffffff",imgGenerator::position_center_center,"1/7",array(0,'5%',0,'5%'))
	->setFont($_SERVER["DOCUMENT_ROOT"]."/upload/fonts/fonts2_7/hinted-PTF55F.ttf");

$generator
	->addText($text)
	->addText($label)
	->fromImg($_SERVER["DOCUMENT_ROOT"] . "/upload/dynamic/2016-08/15/carrot-big.jpg")
	->resizeFor("autodetect")
	->addOverlay(0.5,"#000000")
	->show();

Глядя на красивые картинки для соц. сетей, которые в последнее генерируют многие новостные (и не только) сайты — захотелось написать свой генератор.

Примеры картинок

Скрипт работает на PHP, с использованием модуля Imagick. Писать это на GD2 что-то я не решился.

Алгоритм работы предполагался такой:

  • Берем за основу картинку или цвет
  • Уменьшаем до нужного размера
  • Накладываем сверху полупрозрачный фон
  • Устанавливаем логотип
  • Добавляем надпись
  • Кешируем результат

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

GitLab о политике управления проектами open source

Reading time5 min
Views8.1K

Некоторые скептически высказываются насчет ГитЛаба — мол вот вы перестанете поддерживать бесплатный Community Edition(CE), и что мы будем делать? Не перестанем. Публикуем для вас перевод статьи на эту тему.




Недавно мы зафиксировали нашу политику в отношении поддержки ПО с открытым кодом (open source) и нашу преданность этому методу разработки. Коротко нашу политику можно описать так: нужно принимать решения в интересах проекта, при этом не забывая о бизнесе, который этот проект поддерживает. В этой статье я хочу поделиться с вами соображениями о некоторых правилах в нашей политике.


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

Исследователи создали эксплоит для получения root-доступа к Android-смартфонам с помощью уязвимости Rowhammer

Reading time4 min
Views25K


Международная группа исследователей из Австрии, Нидерландов и США, информационной безопасности разработала атаку, позволяющую получить root-доступ к большому количеству Android-устройств, пишет издание Ars Tehnica. Для этого эксплуатируется техника Rowhammer, позволяющая осуществлять манипуляции с данными, хранящимися в ячейках памяти. При этом, ранее считалось, что атаки с использованием уязвимости Rowhammer имеют ограниченные перспективы реального применения — новый эксплойт демонстрирует, что ей подвержено гораздо больше устройств, чем предполагалось (включая и работающие на ARM-чипах).

Исследователи создали специальное приложение-эксплойт Drammer, которое не требует для работы никаких особенных прав и не использует никаких Android-уязвимостей. Атака осуществляется с помощью уязвимости аппаратного обеспечения — аналогично описанной техники Rowhammer он «простукивает» биты памяти устройства, изменяя важные данные. Это позволяет получать root-доступ к гаджетам производства компаний LG, Motorola, Samsung, OnePlus и, возможно, других вендоров.

Всякие технологичные инфраструктурные игрушки для публичных мест — передаю привет Скайнету

Reading time6 min
Views15K

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

Начнём с детектора драки. Задача вполне понятная: есть много процессоров и умных программистов, город покрыт камерами, нужно всего-то ничего — сделать так, чтобы как только кто-то начал драться, модераторам с резиновыми дубинками пришло сообщение. Дальше они «отмодерируют» уже по-старинке.

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

Но давайте не будем останавливаться на этой приятной ноте, а продолжим смотреть, что ещё есть в арсенале будущего Скайнета. Ну, или Большого Брата.
Читать дальше →

Программирование&Музыка: Частотный фильтр Баттервота. Часть 3

Reading time12 min
Views29K

Всем привет! Вы читаете третью часть статьи про создание VST-синтезатора на С#. В предыдущих частях был рассмотрен SDK и библиотеки для создания VST плагинов, рассмотрено программирование осциллятора и ADSR-огибающей для управления амплитудой сигнала.


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


Будет рассмотрен исходный код и применение эквалайзера из библиотеки NAudio (библиотека для работы со звуком под .NET).


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


Исходный код написанного мною синтезатора доступен на GitHub'е.



Скриншот VST плагина-эквалайзера Fab Filter Pro Q


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

Простыми словами о преобразовании Фурье

Level of difficultyMedium
Reading time14 min
Views1.1M
Я полагаю что все в общих чертах знают о существовании такого замечательного математического инструмента как преобразование Фурье. Однако в ВУЗах его почему-то преподают настолько плохо, что понимают как это преобразование работает и как им правильно следует пользоваться сравнительно немного людей. Между тем математика данного преобразования на удивление красива, проста и изящна. Я предлагаю всем желающим узнать немного больше о преобразовании Фурье и близкой ему теме того как аналоговые сигналы удается эффективно превращать для вычислительной обработки в цифровые.

image (с) xkcd

Без использования сложных формул и матлаба я постараюсь ответить на следующие вопросы:
  • FT, DTF, DTFT — в чем отличия и как совершенно разные казалось бы формулы дают столь концептуально похожие результаты?
  • Как правильно интерпретировать результаты быстрого преобразования Фурье (FFT)
  • Что делать если дан сигнал из 179 сэмплов а БПФ требует на вход последовательность по длине равную степени двойки
  • Почему при попытке получить с помощью Фурье спектр синусоиды вместо ожидаемой одиночной “палки” на графике вылезает странная загогулина и что с этим можно сделать
  • Зачем перед АЦП и после ЦАП ставят аналоговые фильтры
  • Можно ли оцифровать АЦП сигнал с частотой выше половины частоты дискретизации (школьный ответ неверен, правильный ответ — можно)
  • Как по цифровой последовательности восстанавливают исходный сигнал


Я буду исходить из предположения что читатель понимает что такое интеграл, комплексное число (а так же его модуль и аргумент), свертка функций, плюс хотя бы “на пальцах” представляет себе что такое дельта-функция Дирака. Не знаете — не беда, прочитайте вышеприведенные ссылки. Под “произведением функций” в данном тексте я везде буду понимать “поточечное умножение”

Итак, приступим?

Веселее и эффективнее: как использовать музыку для работы и где её искать

Reading time6 min
Views21K

Flickr.com / glacial23

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

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

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

Настройка выделенного сервера Source под Linux, часть 2

Reading time22 min
Views7.8K
  • Записи
    • Настройка веб-сервера
    • Настройка игрового сервера
    • Включение
    • Обслуживание
  • SourceTV
  • Ускорение скачивания контента (Fast Download)
    • Настройка веб-сервера
    • Настройка игрового сервера
  • Боты
    • Поддержваемая карта
    • Пользовательсякая карта
Читать дальше →

Двойная скорость и половина памяти: оптимизация PHP 7

Reading time13 min
Views22K
Ключ к высокой производительности приложений – оптимизация. При этом, чем ниже уровень, на котором код подстраивают под особенности аппаратного обеспечения – тем большего можно добиться. А ещё более впечатляющих результатов можно достичь тогда, когда при проектировании аппаратного обеспечения учитываются особенности кода. Сегодня мы расскажем о том, как идёт работа над ускорением PHP 7, которую совместно, практически непрерывно, ведут Intel и сообщество PHP-разработчиков.


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

Трамплин вызова магических функций в PHP 7

Reading time12 min
Views16K


В этой статье мы подробно рассмотрим оптимизацию в виртуальной машинe в PHP 7 (виртуальной машине Zend). Сначала коснёмся теории трамплинов вызовов функций, а затем узнаем, как они работают в PHP 7. Если вы хотите полностью во всём разобраться, то лучше иметь хорошее представление о работе виртуальной машины Zend. Для начала можете почитать, как устроена ВМ в PHP 5, а здесь мы поговорим о ВМ PHP 7. Хотя она и была переработана, но действует практически так же, как и в PHP 7. Поэтому если вы разберётесь в ВМ PHP 5, то разобраться с ВМ PHP 7 не составит никакого труда.
Читать дальше →

Обзор расширения OPCache для PHP

Reading time33 min
Views130K


PHP — это скриптовый язык, который по умолчанию компилирует те файлы, которые вам нужно запустить. Во время компилирования он извлекает опкоды, исполняет их, а затем немедленно уничтожает. PHP был так разработан: когда он переходит к выполнению запроса R, то «забывает» всё, что было выполнено в ходе запроса R-1.

Очень маловероятно, что на production-серверах PHP-код изменится между выполнением нескольких запросов. Так что можно считать, что при компилированиях всегда считывается один и тот же исходный код, а значит и опкод будет точно таким же. И если извлекать его для каждого скрипта, то получается бесполезная трата времени и ресурсов.
Читать дальше →

Input lag во время рендеринга и как его побеждать

Reading time6 min
Views35K
Привет всем. Многие из вас знакомы с лагом ввода. Это бывает, когда вас в очередной раз убивают в компьютерной игре, и вы кричите: «Ну я же нажал блок/атаку/уворот». Ну а затем джойстик летит в стену. Знакомо? Происходит это потому, что между нажатием клавиш и появлением результата на экране проходит значительное время. Фактически, когда вы смотрите в экран — вы видите прошлое состояние, которое может абсолютно не отражать действительность.

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

Как использовать UrlManager для настройки роутинга и создания «дружелюбных» URL

Reading time13 min
Views42K

Здравствуйте, дорогие читатели! Я продолжаю цикл статей о том, как мы разрабатывали нетипичный, крупный проект с использованием Yii2 framework и AngularJS.

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

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

Самое интересное под катом.
Читать дальше →

Цифровой героин: как экраны превращают детей в психотических наркоманов

Reading time6 min
Views30K


Сюзан [все имена изменены] купила своему шестилетнему сыну Джону iPad, когда тот был в первом классе. «Я подумала, почему бы ему не обучиться таким вещам?» — рассказала она мне во время сеанса терапии. В школе у Джона используют цифровые устройства во всё младших и младших классах – и учитель по современным технологиям восторгался обучающими преимуществами устройств – поэтому Сюзан хотела сделать так, как будет лучше для её светловолосого сына, любившего читать и играть в бейсбол.

Она начала разрешать Джону играть в обучающие игры на iPad. В какой-то момент он открыл для себя Minecraft, который, по словам учителя по технологиям, представлял собой «нечто вроде электронного Lego». Вспомнив, как здорово в детстве было играть с пластиковыми детальками, Сюзан позволила своему сыну играть в Minecraft каждый день.

Facebook рекомендует пациентам психиатра подружиться между собой. Как он узнал?

Reading time4 min
Views57K

Фото: Erendira Mancias / Fusion

Способность Facebook находить людей, «которых вы можете знать», иногда удивляет. Ладно, если это человек, с которым у вас много общих знакомых. Но когда Facebook рекомендует бывшего коллегу с места работы, где вы уже 15 лет не работаете — что это? Место работы не указано в профиле и нет общих знакомых на Facebook. Или — внезапно — девушку, с которой вы однажды встретились и больше никогда не виделись. Откуда он знает про неё?
Читать дальше →

Массивы в РНР 7: хэш-таблицы

Reading time22 min
Views37K
Хэш-таблицы используются везде, в каждой серьёзной С-программе. По сути, они позволяют программисту хранить значения в «массиве», индексируя его с помощью строк, в то время как в языке С допускаются только целочисленные ключи массива. В хэш-таблице строчные ключи сначала хэшируются, а затем уменьшаются до размеров таблицы. Здесь могут возникать коллизии, поэтому нужен алгоритм их разрешения. Существует несколько подобных алгоритмов, и в РНР используется стратегия связных списков (linked list).

В Сети есть немало замечательных статей, подробно освещающих устройство хэш-таблиц и их реализации. Начать можно с http://preshing.com/. Но имейте в виду, вариантов структуры хэш-таблиц — несметное множество, и ни один из них не совершенен, в каждом есть компромиссы, несмотря на оптимизацию циклов процессора, использования памяти или хорошее масштабирование потокового окружения (threaded environment). Одни варианты лучше при добавлении данных, другие — при поиске и т. д. Выбирайте реализацию в зависимости от того, что для вас важнее.

Хэш-таблицы в РНР 5 подробно рассмотрены в материале phpinternalsbook, который я написал вместе с Nikic, автором хорошей статьи про хэш-таблицы в РНР 7. Возможно, её вы тоже сочтёте интересной. Правда, она писалась до релиза, поэтому некоторые вещи в ней слегка отличаются.

Здесь же мы подробно рассмотрим, как устроены хэш-таблицы в РНР 7, как с ними можно работать с точки зрения языка С и как ими управлять средствами РНР (используя структуры, называемые массивами). Исходный код в основном доступен в zend_hash.c. Не забывайте, что хэш-таблицы мы используем везде (обычно в роли словарей), следовательно, нужно проектировать их так, чтобы они быстро обрабатывались процессором и потребляли мало памяти. Эти структуры решающе влияют на общую производительность РНР, поскольку местные массивы не единственное место, где используются хэш-таблицы.
Читать дальше →

Студент сделал механическую ногу, которая прыгает в два раза выше своей высоты

Reading time4 min
Views16K

Некоторые из существующих роботов, способных на энергичные движения ногами: 1) Boston Dynamics SpotMini; 2) UPenn/Ghost Robotics Minitaur; 3) ATRIAS; 4) RHex и Canid; 5) StarlETH; 6) Boston Dynamics Spot; 7) MIT Cheetah; 8) Boston Dynamics Atlas. Иллюстрация: Саймон Калуче/Университет Карнеги-Меллона

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

SEO оптимизация. Начало

Reading time14 min
Views109K


Здрасте!
Множество информации по SEO (оптимизация, продвижение, вот это вот все) разбросано по просторному интернету, создано множество статей и форумных топиков на эту тему. В данном посте, я собрал рекомендации и инструменты, которые касаются непосредственной страницы сайта (структура, код, вот это вот все).

В статье вы найдете:
  • структурные элементы страницы: заголовки, картинки, URL, контент. Рекомендации по их использованию и оценки важности в ранжировании.
  • микроразметка: кто она и с чем ее едят. Рассмотрены schema.org и OpenGraph
  • дана оценка инструментам с точки зрения важности для ранжирования, usability или же поведенческих факторов
  • на примере крупный процветающих сайтов рассмотрены примеры использования описанного инструментария

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

Information

Rating
Does not participate
Registered
Activity