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

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

Send message

Как две недели?!

Reading time2 min
Views106K
Как это вам надо две недели на эту задачу? Что, правда? Вот на эту элементарную формочку с тремя полями и двумя кнопками? Две недели? Да вы надо мной издеваетесь, наверное! Давайте разбираться.

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

Мы всё обсудили? Нет? Что ещё?
Читать дальше →

Я придумал Erlang, потому что его не существовало

Reading time4 min
Views50K

Автор статьи — Joe Armstrong, разработчик Erlang

Я, как программист-старожил, люблю иногда вспоминать свою молодость …

Когда, в далеком 1967, я только начинал учиться программировать, я выбирал между языками Fortran и Algol. Про Algol ходило множество слухов, но практически никакой полезной информации нельзя было найти, так что я начал с Fortran.

На написание одной программы в среднем уходило 3 недели:

неделя 1 — написание программы на бумаге и отправка в компьютерный центр, где мне делали перфокарты;
неделя 2 — проверка перфокарт, и загрузка их в компьютер;
неделя 3 — получение и анализ результатов.

Когда компилятор доходил до первой синтаксической ошибки в программе, — он останавливался, и это отбрасывало меня обратно в самое начало, к первой неделе. Для исправления 10 ошибок в программе могло потребоваться 30 недель!
Читать дальше →

Знакомимся с аспектно-ориентированным программированием в PHP

Reading time10 min
Views31K
При разработке программного обеспечения программисты и архитекторы пользуются декомпозицией — представлением объектов и взаимосвязей между ними в виде классов, объектов, их свойств и методов.


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

Антивирус Бабушкина

Reading time1 min
Views464K


Молодой студент-третьекурсник из АлтГТУ разработал компьютерную антивирусную программу под названием “Иммунитет”. По словам АП, эту программу сейчас устанавливают в некоторых школах Барнаула. На данный момент продано уже более тысячи копий этого антивируса! В основном ее устанавливают на персональных компьютерах, но уже приобрели несколько школ и компаний краевого центра.
Читать дальше →

TCP Congestion Control или Почему скорость прыгает

Reading time4 min
Views125K
Всем привет!

Бывало ли у вас такое, что ставите файл на закачку, и скорость медленно, но верно возрастает, затем, в какой-то момент, резко снижается, затем опять возрастает? Закачка файла в один поток не обеспечивает полную скорость канала? Запускаете торрент-клиент, и пинг в игре сильно прыгает? Используете 3G-модем (или другую линию с относительно большой потерей пакетов) и не можете это терпеть?
Наверняка вы винили во всем ваш роутер, либо обвиняли своего провайдера в кривой настройке шейпера? Это влияет, но виноваты не они.
Итак, встречайте:

TCP Congestion Control, или TCP Congestion Avoidance Algorithm.

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

Миникомпьютер из роутера с OpenWRT: пишем USB class-driver под Linux

Reading time20 min
Views79K

Добрый день, уважаемые хабровчане. В прошлой статье мы с вами разработали простую USB-видеокарту на базе STM32F103 и китайского дисплейного модуля на контроллере ILI9325.
Проверяли мы его из юзерспейса, при помощи LibUSB. Ну что ж, пришло время нам написать свой собственный драйвер, который позволит делать все то же самое, но из-под Linux и без дополнительных библиотек. Этот драйвер мы внесем в дерево исходников OpenWRT и он поселится там наравне со всеми остальными.
Начнем.
Читать дальше →

Coroutines в PHP и работа с неблокирующими функциями

Reading time18 min
Views81K
Одним из самых больших нововведений в PHP 5.5 будет поддержка генераторов и корутин (сопрограмм). Генераторы уже достаточно были освещены в документации и в нескольких других постах (например в этом или в этом). Сопрограммы же получили очень мало внимания. Это гораздо более мощный, но и более сложный для понимания и объяснения, инструмент.

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

Генераторы


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

Орион-128: радиолюбительский компьютер

Reading time9 min
Views143K
Исторически, первым массовым радиолюбительским компьютером был Радио-86РК, требовавший для построения всего 29 микросхем. Его существенным ограничением был то, что он поддерживал только текстовый режим и требовал трудно-доставаемых микросхем. Орион-128 — был логическим продолжением — также ориентирован на сборку радиолюбителями, имел больше памяти (128кб против 16/32кб) и поддерживал графический режим: 384 × 256 (в режиме 2 цвета, 4 цвета, и 2 цвета из палитры 16 цветов на каждые 8 пикселей). Ориентировочный размер популяции Орион-ов в период его пика популярности — около 30-40 тыс. компьютеров.

Орион появился у меня в 94-м году, и именно на Орионе я запускал свои первые программы (до него их приходилось писать «в стол»). К моменту приобретения первой PC-шки в 97-м — Орион начал глючить все забористее (не грузился с первого раза, приходилось много раз перезагружать...) и под конец перестал работать совсем. Отремонтировать я его тогда не мог, и все эти годы он пролежал без движения, но не забытым.

Этим летом я наконец решил попробовать его отремонтировать — что из этого получилось (а также обзор архитектуры и некоторых программных особенностей) — под катом.
Читать дальше →

Как заставить компилятор C/C++ генерировать плохой код

Reading time4 min
Views37K
Это перевод статьи «How to trick C/C++ compilers into generating terrible code?», автор оригинала — Aater Suleman.

На курсе архитектуры ЭВМ мне сказали, что процессор похож на машину. Руль и педали — это ISA, двигатель — микроархитектура, а программа — водитель. Продолжая эту аналогию, скажу, что использование компьютера похоже на управление машиной через пульт дистанционного управления. Пульт — это клёвая вещь, но в то же время важно понимать, как он работает. Даже в профессиональном ПО я видел много примеров кода, который может смутить даже самый умный компилятор. В этой статье я расскажу об основных методах запутывания компиляторов.

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

Нужно ли учиться в университете?

Reading time4 min
Views84K
Последнее время подобные обсуждения на околоайтишных ресурсах — не редкость. Мнения айтишников все больше и больше сводятся к тому, что учеба в университете — обычная трата времени, потому что они — [айтишники без диплома, бросили университет, купили диплом] — нужное подчеркнуть. Такая точка зрения понятна и имеет право на существование. Но хочу поговорить об этом вопросе с другого ракурса. Конечно же, в каждом конкретном случае все индивидуально, но некие общие выводы можно сделать.

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

Пишем модуль для Ejabberd

Reading time9 min
Views6.9K
Если вам нужна нестандартная функциональность от XMPP сервера ejabberd, вы не знаете, как это настроить штатными средствами и не нашли подходящего для этого модуля, то можно написать этот модуль самим.

Так я решил, когда начальство объявило войну пустой болтовней в jabber-е, для чего необходимо было запретить некоторым пользователям чатица с другими, но разрешить с третьими. И хотя у меня всё ещё есть смутное подозрение, что это можно настроить с помощью списков доступа, я решил написать модуль, которым мне будет удобно пользоваться. Этот модуль и послужит примером для рассказа.
Читать дальше →

Доклад ОЭСР: интернет на пять порядков эффективнее телефонных сетей. Не нужно мешать ему развиваться!

Reading time2 min
Views23K
Последний доклад Организации экономического сотрудничества и развития (ОЭСР), посвящённый мировому рынку интернет-трафика, опубликованный 17 октября, состоит из 99 страниц, которые читаются, как увлекательный детектив. Он содержит подробные статистические данные об интернет провайдерах, точках обмена трафиком, росте пропускной способности интернета, механизмах самоорганизации, регулирующих всемирную сеть. Но я хочу остановиться на сравнении интернета и телефонных сетей, которое часто используется в докладе.

С момента своего появления интернет демонстрирует устойчивый экспоненциальный рост (сегодня 20 среднестатистических абонентов с широкополосным доступом генерируют столько же трафика, сколько весь интернет в 1995 году). Его пропускная способность намного превосходит возможности любых других глобальных систем связи. При этом цена трафика в международных точках обмена, в эквиваленте поминутной оплаты за голосовую связь, составляет 0.0000008 долларов в минуту — на пять порядков ниже, чем в телефонных сетях. Частично это объясняется технологическим превосходством сетей с коммутацией пакетов, но эта разница не настолько велика, тем более что телефонные сети уже давно используют пакетную коммутацию. Ключевое отличие в другом.
Читать дальше →

В django появилась возможность использования своей модели вместо contrib.auth.models.User

Reading time1 min
Views18K
image

Через шесть лет после появления тикета с предложением возможности использования своей модели вместо штатной django.contrib.auth.models.User и тысяч постов с идеями использования дополнительной модели профилей случилось чудо: https://github.com/django/django/commit/70a0de37d132e5f1514fb939875f69649f103124

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

Найдены останки голубя с криптограммой Второй мировой войны

Reading time1 min
Views91K

Спустя почти 70 лет после окончания Второй мировой войны в дымоходе одного из особняков деревни Блетчингли, Великобритания были обнаружены останки голубя с привязанным к лапе почтовым контейнером красного цвета.
Читать дальше →

Краш-тест электрических ламп при низких температурах (до -145 градусов Цельсия)

Reading time2 min
Views179K
image

В лаборатории канала GTV мы провели тестирование электрических ламп при низких температурах и вот сегодня завершили монтаж сюжета. Для тестирования нам был доступен диапазон температур от 0°C до -145°C и достигался он путем подачи в термокамеру жидкого и газообразного азота. Регулировали температуру путем пропускания азота через испаритель. Это что-то вроде радиатора, только в отличии от классического предназначения, наш не охлаждал, а нагревал комнатной температурой проходящий через него газ.
Читать дальше →

Сказ о том, как мы веб-разработку в Индии заказывали, и как нас спасли русские программисты

Reading time5 min
Views42K
image

В процессе работы над сайтом Getwear мы столкнулись не только со страшным американскими дизайном — у нас появился также опыт работы с программистами из Индии и России. Об этом опыте мы с радостью расскажем вам, а бонусом станут 8 советов тем, кто подумывает о выводе программирования в оффшор.

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

FiM++

Reading time3 min
Views49K
image

Однажды на лекции друг рассказал мне, что существует язык программирования пони, (основанный на сериале, конечно). Он сказал, что видел его на reddit, но даже после продолжительного поиска я смог найти только пустой репозиторий на Google Code без деталей реализации. Я был очень этим разочарован, но только на несколько минут, пока не понял, что могу написать реализацию этого языка сам. Возможно, она не будет хороша или вообще используема в том смысле, что не каждый сможет написать к ней интерпретатор, но мне хотелось проверить свои умения. А ещё мне нравятся затянувшиеся шутки.
Читать дальше →

Web-приложение на C/C++ с помощью FastCGI — это просто

Reading time20 min
Views118K
Добрый день.
В этой статье я бы хотел рассказать про протокол FastCGI и способы работы с ним. Не смотря на то, что сам протокол и его реализация появились ещё в 1996 году, подробных руководств по этому протоколу просто нет — разработчики так и не написали справки к собственной библиотеке. Зато года два назад, когда я только начал пользоваться этим протоколом, часто встречались фразы типа «я не совсем понимаю, как пользоваться этой библиотекой». Именно этот недостаток я и хочу исправить — написать подробное руководство по использованию данного протокола в многопоточной программе и рекомендации по выбору различных параметров, которым могли бы воспользоваться все желающие.
Читать дальше →

Нейросеть Google приступила к работе

Reading time2 min
Views118K
В июне 2012 года группа исследователей из Google запустила нейросеть на кластере 1000 компьютеров (16 тыс. процессорных ядер; 1 млрд связей между нейронами). Эксперимент стал одним из самых масштабных в области искусственного интеллекта, причём систему изначально создавали для решения практических задач.

Самообучаемая нейросеть — достаточно универсальный инструмент, который можно использовать на разных массивах данных. В компании Google её применили для улучшения точности распознавания речи: «Мы получили уменьшение на 20-25% количества ошибок при распознавании, — говорит Винсент Ванхоук (Vincent Vanhoucke), руководитель отдела распознавания речи в Google. — Это значит, что многие люди получат безошибочный результат». Нейросеть оптимизировала алгоритмы для английского языка, но Ванхоук говорит, что аналогичные улучшения могут быть достигнуты и для других языков и диалектов.
Читать дальше →

Information

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