Pull to refresh
15
0
Vladislav @int_index

Пользователь

Send message

Плейн- и радарспоттинг, или я болен авиацией

Reading time7 min
Views79K
Я болен авиацией. Да, именно так и никак иначе. На моем ноутбуке хранится куча мануалов к различным самолётам от Boeing и Airbus, пособия по радиообмену, фильмы по авиационной тематике. Помимо всего этого я слушаю авиадиапазон с помощью портативной радиостанции (которая, кстати, не имеет возможности передавать на этих частотах, только слушать!). И плюс ко всему я регулярно, раз или два в месяц выбираюсь к аэропорту Шереметьево и фотографирую самолёты, заходящие на посадку. В этом посте я расскажу, как докатился до такой жизни. Может быть кто-то из вас, уважаемые читатели, тоже заболеет авиацией.
Кому интересно — прошу под кат.
Читать дальше →

Space Engine — Вселенная на ладони

Reading time8 min
Views100K
My God, it's full of stars!
Arthur C. Clarke

Кто из нас в детстве не мечтал «бороздить просторы вселенной», как капитан Пикард, прогуливаться по неизведанным планетам далёких миров, встречать рассветы двойных или тройных звёзд, погружаться в атмосферы газовых гигантов, ронять корабли в чёрные дыры? И я тоже не исключение. Конечно, частично эту мечту воплощали книги, фильмы и «Элит»-ные игры. Но вся романтика в них разрушалась банальными купи-продай и «пиу-пиу» в «жидком» космосе на скоростях самолётов времён первой мировой войны. Да и тем немногим виртуальным миркам не хватало свободы, детальности и масштабов реальной вселенной.

В начале тысячелетия я познакомился с MojoWorld и был шокирован его возможностями. Наконец-то, можно было бродить по другим планетам и фотографировать местные достопримечательности. Он стал первой ласточкой, дававшей надежду на то, что полномасштабные космические миры технически возможны. Но, к сожалению, производительности железа десятилетней давности было не достаточно для передачи всех красот в реальном времени. Да и планеты оставались всего лишь мёртвыми пейзажами.

Но вот, чуть больше года назад, я совершенно случайно наткнулся на вселенную Space Engine, и она просто взорвала мне мозг и размазала его по полу своим масштабом и невероятной детализацией.
Читать дальше →

История одного Crash-а, и NSLog'а его лечившего

Reading time11 min
Views30K
Лечу Crash'и NSLog'ами. Недорого. Многолетний опыт. 100% гарантия.

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

Все началось с того, что на одном из относительно больших проектов начало стабильно вываливаться исключение при авторизации пользователя. «Ну и что тут такого? У всех бывает. Проверку на nil забыли поставить или где-то накосячили. „Тоже, мне, большое событие — crash на проекте“, — подумает большая часть программистов. В принципе — абсолютно согласен. Crash — не такое уж и редкое явление в программировании под iPhone, и с ним сталкиваешься по десять раз на день. Но этот был особенным. От него уже начало попахивать „магией“, когда мне сказали про его некоторые параметры и особенности:

  • Воспроизводимость на симуляторе: 100%
  • Воспроизводимость на устройстве: 0%
  • Путь к крэшу (после локализации крэша): ~ 40 секунд
  • Настройки оптимизации при компиляции (-O1,-O2...) не влияют на воспроизводимость
  • XIB'ы в проекте не используются


Да выглядел он довольно безобидно:

// Code
UITextView * textView = [ [UITextView alloc] initWithFrame:CGRectMake(0, 150, _width, _height)];

// Exception
*** Terminating app due to uncaught exception 'CALayerInvalidGeometry', 
    reason: 'CALayer bounds contains NaN: [0 0; nan 200]'


»Ну тут же и ежу понятно, что width — после вычисления — NaN!", — подумал я. Бегло поглядев где и как вычисляется ширина вьюхи, и не найдя ничего особого опасного, я, для утверждения своей догадки, поставил перед созданием вьюхи NSLog. А вдобавок, и точку останова на строке с созданием элемента.
// Source:
NSLog(@"width = %f", _width);

//Output:
width = 200


«Гм», — подумал про себя я, и продолжил выполнение программы после точки останова. И крэша не произошло…

Что было дальше? Читайте во второй части сразу под катом...

Подделываем вашу подпись при помощи шарнирного механизма. Теорема Кемпе

Reading time5 min
Views223K
В этом посте я расскажу про программу, которая подделывает любую подпись при помощи шарнирного механизма. Программа основана на теореме Кемпе, доказанной в середине 19-го века.

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

Ликбез по типизации в языках программирования

Reading time12 min
Views533K
image

Эта статья содержит необходимый минимум тех вещей, которые просто необходимо знать о типизации, чтобы не называть динамическую типизацию злом, Lisp — бестиповым языком, а C — языком со строгой типизацией.

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

Джейлбрейк для высшего образования

Reading time2 min
Views112K


Традиционная система высшего образования безнадёжно отстала от жизни — считают создатели стартапа Degreed. Стоимость образования растёт втрое быстрее инфляции, долги по образовательным кредитам неподъёмны, а сложившаяся ещё в средние века модель непрерывного обучения в стенах университета на протяжении нескольких лет совершенно не соответствует современным требованиям. Сейчас всё чаще говорят о «пожизненном образовании», о том, что диплом или учёная степень, полученные много лет назад, слабо связаны с реальными знаниями и квалификацией.

В то же время за пределами университетов начала складываться совершенно новая экосистема получения и, что очень важно, подтверждения и сертификации знаний и навыков. Профиль на LinkedIn, репозитории на GitHub, сертификаты от серьёзных корпораций вроде Cisco или Microsoft, результаты авторитетных онлайн-тестов сегодня часто могут заменить формальный документ об образовании.

Degreed стремится к амбициозной цели — создать единый пожизненный цифровой диплом, постоянно обновляемый и гибкий, который будет отражать реальные знания независимо от того, из какого источника они получены. Вы можете прослушать несколько курсов в одном университете, ещё несколько — в другом, или вообще на сайте вроде Coursera или Khan Academy — баллы в вашем «дипломе» будут увеличиваться в зависимости от авторитетности курса и ваших личных достижений.
Читать дальше →

Цикл Дэвида Колба в жизни

Reading time5 min
Views72K
image

Если Вы часто сталкиваете в работе со следующими фразами, то это статья для Вас:
• Почему ты, не разобравшись, сделал такую ерунду?
• Хватит задавать вопросы, прочитай вот этот маленький параграф и всё поймешь! — Я прочитал, но ничего не понял, объясни по-человечески.
• А вы знаете, нам всё надо делать по другому, так как в книге Х, в главе Y, есть утверждение Z противоречащее пункту 14.5.3 нашего ТЗ.
• Когда ты уже начнешь работать? – Я проектирую систему, мне надо ещё три недели.
• У меня есть идея, как сделать нашу жизнь лучше! Вася, послушай меня, тебе надо сделать: а, б, в, г …
Читать дальше →

Мы сделаем этот велосипед за месяц

Reading time5 min
Views164K
Правильное управление процессом разработки это не меньшая проблема, чем собственно правильный код. Начинающие руководители часто даже не задумываются об этом, наступая на одни и те же грабли. На примере одной вымышленной истории попробуем разобраться какие проблемы нас ожидают и что можно сделать.

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

Велосипед


image
Итак, Вася долго трудился рядовым программистом, ведущим программистом и наконец стал Руководителем. У него есть команда отчаянных головорезов разработчиков в количестве двух единиц. Безусловно талантливых и знающих свое дело специалистов.

Вася получает первый заказ — надо сделать … велосипед.
Что же случилось далее

Как работает микроэлектронное производство и что нам стоит дом построить?

Reading time8 min
Views183K
Многие наверняка не раз задавались вопросом, почему процессоры, видеокарты и материнские платы которые мы покупаем в магазинах — разработаны и сделаны где угодно, только не в России? Почему так получается, неужели мы только нефть качать можем?

Сколько стоит запуск производства микросхемы, и почему при наличии 22нм фабрик, бОльшая часть микросхем по всему миру до сих пор делается на «устаревшем» 180нм-500нм оборудовании?

Ответы на эти и многие другие вопросы под катом.
Читать дальше →

Хлеб Маркуса и YAGNI

Reading time17 min
Views46K
imageНедавно в нашей новостной ленте появились два Героя, программисты-пекари – Борис и Маркус. Борис – хороший человек и перфекционист, а Маркус – очень скромный и серый программист, не желающий выделяться. Оба стремятся к лучшему и хотят быть полезными. Но кажется, что Маркус не очень старался.
Это новая ветка – продолжение. Сегодня сюжетная линия коснется только Маркуса. Он – главный герой.
Итак, история под катом.
Читать дальше →

Как заинтересовать зарубежного работодателя

Reading time3 min
Views59K
В моём прошлом посте про поступление в магистратуру без бакалавриата читатели очень интересовались как перебраться в Европу без диплома.

Итак, мне 26 лет, я веб-разработчик в Берлине и я никогда не учился в университете.
5 составляющих успеха

Как два программиста хлеб пекли

Reading time5 min
Views263K


Я работаю программистом уже много лет, на протяжении которых, как это ни странно, я всё время что-то программирую. И вот какую интересную вещь я заметил: в коде, написанном мной месяц назад, всегда хочется что-то чуть-чуть поправить. В код полугодичной давности хочется поменять очень многое, а код, написанный два-три года назад, превращает меня в эмо: хочется заплакать и умереть. В этой статье я опишу два подхода. Благодаря первому архитектура программы получается запутанной, а сопровождение — неоправданно дорогим, а второй — это принцип KISS.

Итак, представим себе, что есть два программиста. Один из них умный, прочёл кучу статей на Хабре, знает каталог GoF наизусть, а Фаулера — в лицо. Другой же делает всё просто. Первого будут звать, например, Борис Н., а второго — Маркус П. Само собой, имена вымышленные, и все совпадения с реальными людьми и программистами случайны.

Итак, к ним обоим приходит проектный менеджер (если в вашей вселенной PM не ходит сам к программистам, назовите его как-то иначе, например BA или lead, сути это не изменит) и говорит:
— Ребята, нам нужно, чтобы делался хлеб.

Именно так, «делался», без уточнения способа производства.

Как же поступят наши программисты?
Читать дальше →

В пень free-lance.ru!

Reading time4 min
Views639K
В связи с прочтением соседнего поста предлагаю перечислить список бирж, на которых можно найти альтернативу тому унылому говну, в которое превратился free-lance.ru, ибо терпеть планомерный геноцид я больше не намерен.
Читать дальше →

Школьный учитель бесплатно собрал компьютерный класс из 70 Linux-ПК

Reading time2 min
Views16K
Робер Литт работает учителем в школе с крайне скромным бюджетом в Окленде (США) и является большим энтузиастом компьютерных технологий. Работа в школе, где для учеников нет ни одного компьютера, привела его к мысли о том, что такое положение является, как минимум, недопустимым и с этим надо что-то делать.

Роберт принялся за дело. Являясь участником ряда социальных сетей, он распространил запись, из которой следует, что он является школьным учителем информатики в школе без единого компьютера и будет очень благодарен тем людям, которые смогут подарить школе свои старые машины, которые обычно стоят в кладовке, занимают место, покрываются пылью, но выбросить которые рука просто не поднимается. Как оказалось, таких людей довольно много, и вскоре Роберт получил целых 18 старых компьютеров, выпущенных после 2002 года, приблизительные характеристики которых были скромными — 512 Мб RAM и 60 Гб HDD — но что всё равно было гораздо лучше, чем ничего.
Узнать подробности

Восстановление расфокусированных и смазанных изображений. Практика

Reading time10 min
Views358K
Не так давно я опубликовал на хабре первую часть статьи по восстановлению расфокусированных и смазанных изображений, где описывалась теоретическая часть. Эта тема, судя по комментариям, вызвала немало интереса и я решил продолжить это направление и показать вам какие же проблемы появляются при практической реализации казалось бы простых формул.

В дополнение к этому я написал демонстрационную программу, в которой реализованы основные алгоритмы по устранению расфокусировки и смаза. Программа выложена на GitHub вместе с исходниками и дистрибутивами.

Ниже показан результат обработки реального размытого изображения (не с синтетическим размытием). Исходное изображение было получено камерой Canon 500D с объективом EF 85mm/1.8. Фокусировка была выставлена вручную, чтобы получить размытие. Как видно, текст совершенно не читается, лишь угадывается диалоговое окно Windows 7.



И вот результат обработки:



Практически весь текст читается достаточно хорошо, хотя и появились некоторые характерные искажения.

Под катом подробное описание проблем деконволюции, способов их решения, а также множество примеров и сравнений. Осторожно, много картинок!
Читать дальше →

Весь PHP в двух строчках

Reading time1 min
Views6.7K
Я с гордостью хочу представить вам способ описать весь опыт программирования на PHP двумя строчками.

Двумя объявлениями функций из стандартной библиотеки PHP:

array_filter($input, $callback);
array_map($callback, $input);

Угумс.

Ленивые вычисления

Reading time8 min
Views17K
Одной из «визитных карточек» Хаскеля являются отложенные, или ленивые, вычисления. Эта особенность языка не только открывает множество возможностей, но и создаёт некоторые проблемы, особенно со скоростью работы программ.

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

Я не знаю Си

Reading time4 min
Views51K
Цель этой статьи — заставить всех, особенно программистов на Си, сказать «я не знаю Си».
Хочется показать, что тёмные углы в Си значительно ближе, чем кажется и даже тривиальные строки кода несут в себе undefined behavior.
Читать дальше →

Единственный способ

Reading time4 min
Views71K
Ральф вошел в помещение ангара №1 в 8:30 утра, как делал это ежедневно уже несколько лет. Его взгляд сразу же устремился к центру зала, где на постаменте, окруженный множеством приборов и паутиной кабелей, находился смысл его работы. Собственно говоря, не только его — миллионов людей по всему миру. Первый инопланетный корабль. Полтора десятилетия назад он совершил аварийную посадку и был частично поврежден, оставив, однако, весьма много материала для изучения. Настоящим чудом стало то, что политики и учёные после этого события не переругались, а смогли организовать эффективное изучение свалившегося с небес подарка. На реверс-инжиниринг корабля были брошены лучшие умы планеты. Ральф, возглавляющий группу изучения приборов связи, стоял в ангаре и в который раз любовался стремительной, похожей на стрелу в полёте, формой корабля. Он вспоминал всё, что случилось за последние годы.
Читать дальше →

Прикручиваем Head Up Display к MonoDevelop или о том, как криво сделано глобальное меню в Ubuntu

Reading time3 min
Views2.2K


Проблема с неработоспособностью HUD в MonoDevelop уходит корнями в старый баг, вызванный переходом на глобальное меню и заключавшийся в том, что менюшки у MonoDevelop не показывалось вообще никакой. Его "починили", выключив использование глобального меню как такового. Это же так просто, не фиксить проблему в своей кривой либе, а сделать чёрный список приложений.
Тяга к экономии пикселей и желание таки прикрутить HUD взяли своё. Целых два часа моего драгоценного времени, несколько костылей и всё таки завелось.

Небольшой экскурс в работу глобального меню: оно экспортируется приложением через D-Bus, а чтобы разработчики не писали дополнительный код, в Canonical наклепали хитровывернутых библиотек, берущих нормальное, человеческое меню оконного тулкита и экспортирующие его за разработчика, причём, как выяснилось, весьма криво, но об этом потом. При этом возможности вручную экспортнуть это меню нет. Точнее, есть какая-то мутная библиотечка с названием libdbusmenu и полным отсутствием хоть какой-то документации, не говоря уже о биндингах к чему-либо. Этакая проприетарщина наоборот — код открыт, но использовать его толком нельзя ввиду невозможности быстро понять, как с этим вообще работать. Таким образом реализовать в GnomePlatform.cs метод SetGlobalMenu (предусмотренный специально для систем с глобальным меню и реализованный в MacPlatform.cs) не представляется возможным, что ж, придётся разбираться с тем, почему не работает костыль с экспортилкой и придумывать свои костыли, чтобы оно заработало. Я такими извращениями не занимался со времён, когда нужно было заставить работать Навител на разнокалиберных китайских железках с изувеченной до неузнаваемости WinCE 4.2.

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

Information

Rating
Does not participate
Location
Россия
Registered
Activity