Pull to refresh
4
0
Алексей Голубев @FreeCX

Ленивый программист

Send message

Для чего нужны шаблоны проектирования

Reading time5 min
Views101K
Все чаще и чаще я слышу от разработчиков и читаю в статьях, что шаблоны проектирования (они же дизайн-паттерны) никому не нужны. Мол, они появились во времена «цветения» UML, RUP, CASE систем и прочих чересчур «сложных» инструментов, подходов и практик. А сейчас самое важное — это код рабочий написать, да побыстрее. На умные толстые книжки ни у кого нет времени, разве что для прохождения собеседования. Тех, кто хочет обсудить данную тему, прошу под кат.

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

Модульный протез конечностей от Лаборатории прикладной физики

Reading time2 min
Views13K


Одному мужчине, потерявшему сорок лет назад обе руки, прошлым летом несказанно повезло. В Лаборатории прикладной физики (ЛПФ) Джонса Хопкинса ему сделали новые конечности — два революционных модульных протеза. Лесли Бо управлял новообретенными руками, просто думая о том, что он хочет сделать.
Читать дальше →

Учебник по языку программирования D. Часть 1

Reading time10 min
Views42K
Данный пост начинает серию переводов D Programming Language Tutorial, дабы компенсировать информационный вакуум об этом системном языке. Каждая часть будет содержать константое количество материала из книги, так как оригинальные главы имеют широкий разброс в размере: от пары абзацев до нескольких печатных страниц. Все примеры кода проверяются на текущем релизе компилятора dmd 2.065, и если возникают проблемы с технической частью, прошу отписываться в комментариях.

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

Обзор алгоритмов сжатия графов

Reading time7 min
Views17K
Данная работа описывает способы сжатия прежде всего социальных(графы связей между пользователями в социальных сетях) и Web-графов(графы ссылок между сайтами).

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

а) получить список ребер для определенной вершины
б) узнать соединяются ли 2 вершины.
Читать дальше →

Встраивание в ядро Linux: перехват системных вызовов

Reading time17 min
Views27K
Под термином «системный вызов» в программировании и вычислительной технике понимается обращение прикладной программы к ядру операционной системы (ОС) для выполнения какой-либо операции. Ввиду того что такое взаимодействие является основным, перехват системных вызовов представляется важнейшим этапом встраивания, т.к. позволяет осуществлять контроль ключевого компонента ядра ОС — интерфейса системных вызовов, что, в свою очередь, даёт возможность инспектировать запросы прикладного ПО к сервисам ядра.

Данная статья является продолжением анонсированного ранее цикла, посвящённого частным вопросам реализации наложенных средств защиты, и, в частности, встраиванию в программные системы.

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

Семь истин об инди-разработке

Reading time9 min
Views36K


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

1. Никто ничего не знает


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

Примерно 30 процентов вашего времени будет потрачено собственно на создание игры. Остальное время вам потребуется тратить на другие дела. Вообще-то вам повезет, если вы будете тратить 4 месяца в году на, собственно, саму игру. Вы, наверное, не знаете многого о том как вести бизнес, о маркетинге и тому подобном, но вам придется этим заниматься. И, конечно, вы ничего не знаете о будущем, например, о том, какие платформы будут через 5 лет, как будут меняться технологии или аудитория.

Что же делать?
Читать дальше →

Пилотный выпуск видео курса «Параллельное Программирование и Оптимизация для Intel Xeon Phi копроцессоров»

Reading time3 min
Views6K
Привет, Хабр!

Как указано в названии этого топика, я активно тружусь над созданием учебного видео курса о параллельном программировании и оптимизации кода для высоко-производительных систем на базе Intel'овских архитектур. Ниже представлена дополнительная информация об этом курсе, список покрываемых тем и лабораторных работ, а так же пилотных эпизод, который даст представление о содержании и формате этого курса.

В текущем модуле на примере построения гистограммы будут показаны две оптимизационные техники для улучшения автоматической векторизации кода компилятором и приведены результаты производительности для Intel Xeon CPU и Intel Xeon Phi копроцессора.



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

В погоне за синим светодиодом

Reading time9 min
Views36K


В недавнее время на Хабре и Гиктаймс появилось немало познавательных статей про светодиодные лампы, их схемотехнику и производство. Разработка главного их компонента – синего светодиода – заняла четверть века, а авторы наиболее успешной технологии были удостоены этой осенью Нобелевской премии. Мне бы хотелось осветить эту историю со стороны физики и рассказать, почему путь к синим диодам был так долог и тернист.
Читать дальше →

Об удобной навигации и отладке C++ кода в Vim

Reading time7 min
Views42K
Компания, где я работаю, разрабатывает программное обеспечение на C++ под Linux. Долгое время мы использовали Qt Creator, с редкими ребятами работающими из Emacs и Vim. Когда я сам попытался пересесть на Vim, я понял, что ситуация с плагинами для разработки на С++ очень не простая. Поработав немного с CTags, я быстро понял, что без напильника работать в Vim будет очень сложно.
К сожалению, с ростом опыта работы с Vim редактор в Qt Creator в режиме эмуляции устраивал меня все меньше, и в какой-то момент я решил потратить немного времени и разобраться, как же сделать из Vim нормальную среду.
Я очертил для себя четыре вещи, которые я бы хотел от среды разработки, и которых мне бы хватило в Vim, чтобы полностью на него перейти:

1. Автодополнение
2. Навигация по коду
3. Отладка прямо из среды
4. Интеграция с Git (в частности Blame прямо в редакторе, и Git Grep)

Автодополнение в Vim — это решенная проблема, и название у решения YouCompleteMe. Это очень качественный плагин, который реализует автодополнение для большого количества языков программирования, в частности Python и C++. Ходят слухи, что внутри Google YouCompleteMe решает и вторую проблему с навигацией кода, но использует для этого внутренные инструменты гугла для индексирования.

Интеграция с Git в какой-то степени решена с помощью vim-fugitive. Это не такая комплексная интеграция, как бывает у Jet Brains, или в Visual Studio, но сравнимая с тем, что предлагает Qt Creator. Те два сценария, которые нужны были мне: blame и grep — работают хорошо.

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

От математики к обобщенному программированию

Reading time1 min
Views38K
Здравствуйте!
Всего месяц назад в издательстве Addison-Wesley вышла книга Александра Степанова — русско-американского учёного в области IT — «From Mathematics to Generic Programming».

image

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

Атомарные и неатомарные операции

Reading time8 min
Views130K


Перевод статьи Джефа Прешинга Atomic vs. Non-Atomic Operations. Оригинальная статья: http://preshing.com/20130618/atomic-vs-non-atomic-operations/

В Сети уже очень много написано об атомарных операциях, но в основном авторы рассматривают операции чтения-модификации-записи. Однако, существуют и другие атомарные операции, например, атомарные операции загрузки (load) и сохранения (store), которые не менее важны. В этой статье я сравню атомарные загрузки и сохранения с их неатомарными аналогами на уровне процессора и компилятора C/C++. По ходу статьи мы также разберемся с концепцией «состояния гонок» с точки зрения стандарта C++11.
Читать дальше →

Как использовать список ядра Linux для создания очереди

Reading time4 min
Views12K
Приветствую!

В данной статье рассматривается использование реализации двусвязного списка ядра Linux.

Двусвязный список в ядре Linux реализован в файле include/linux/list.h. Мы будем использовать адаптированный вариант list.h [1], который отличается от оригинального возможностью использовать его в userspace. Например, создадим очередь — структуру данных с доступом к элементам по принципу «первый пришёл — первый вышел» для произвольного типа данных на основе list.h.
Читать дальше →

Стимпанк-компьютер Альберта Майкельсона

Reading time2 min
Views14K
Оказывается, ещё в 19 веке существовали вычислительные машины, способные осуществлять сложнейшие математические расчёты. Один из уникальных экземпляров — гармонический анализатор Альберта Майкельсона. Прибор выполнял преобразование Фурье. Эта функция сегодня широко используется в информатике, обработке сигналов, физике, теории чисел, комбинаторике, теории вероятностей, криптографии и других областях.

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


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

Rust: абстракции и безопасность, совершенно бесплатно (видеозапись с выступления на митапе Saratov Open-IT)

Reading time3 min
Views7.2K
Привет.

В прошлую субботу я выступал с докладом на очередном митапе Saratov Open-IT, где я рассказал про Rust — многообещающий системный язык программирования, разрабатываемый Mozilla Research и сообществом, и про то, какие проблемы он решает и какие у него есть особенности и инфраструктура. Надеюсь, что моё выступление будет интересно сообществу, поэтому выкладываю его здесь.

(видео не вставлено в пост через тег <video> потому что он не работает с конкретной временной меткой; длительность — примерно полтора часа)
http://www.youtube.com/watch?v=lmauAUF823k#t=2583

Больше про Rust и про сам доклад

История xkcd

Reading time5 min
Views21K
25 января 2003 года Рэндел Манро зарегистрировал доменное имя xkcd.com. Позже многие пытались найти смысл этого набора букв, предлагая автору свои версии: duck x назад без гласной, extreme keyboard configuration daemon и тому подобное. Но название самого популярного веб-комикса для гиков ничего не значит.

В начале нулевых Манро устал от смысловых никнеймов (Skywalker4, Animorph7 и так далее). Хотелось какое-нибудь слово, которое не надоест, которое будет принадлежать только его создателю. То было время, когда некоторые четырёхбуквенные адреса в зоне .com были свободны в отличие от сегодняшних дней тотального киберсквоттинга. Поэтому Рэндел подобрал четыре буквы, которые никто до него не использовал, которые ничего не значили и которые никак не произносились и не являлись каким-нибудь акронимом.

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

Тогда Манро ещё работал в НАСА, но занимался достаточно мелкими проектами, чтобы иметь возможность отвлечься на какую-нибудь ерунду. К примеру, однажды во время работы над алгоритмами навигации он запрограммировал робота, который возил его по офисам космического агентства на офисном стуле с колёсиками.
Читать дальше →

«Математика – один из видов искусства»: пост к столетию со дня рождения Мартина Гарднера

Reading time3 min
Views59K

Перевод поста Эда Пегга Младшего (Ed Pegg Jr) "Martin Gardner’s 100th Birthday"

Я думаю, содержание этого поста будет интересно всем, кто любит математику и ее красоту, всем, кто знаком с замечательными книгами и задачами Мартина Гарднера, а также будет полезно учителям, школьникам и студентам. Все ссылки в данном посте ведут на сайты Wolfram Demonstrations Project (коллекция бесплатных интерактивных демонстраций, созданных пользователями системы Mathematica на языке Wolfram Language с помощью технологии Computable Document Format (CDF), при этом для вас доступны исходные коды всех демонстраций, а значит, вы можете каждую из них скачать, изучить и изменить под себя) и Wolfram MathWorld (крупнейшая и самая авторитетная онлайн-энциклопедия по математике).

Gardner100_1.gif

Читать далее...

Разработка игры в 115 кб — хаки, баги и досада

Reading time10 min
Views41K

В начале ноября я участвовал в 115-ом по счете конкурсе сообщества Independent Games Developers Contests (IGDC), темой которого была разработка аркадного шутера с лимитом в 115 килобайт за неделю. Под катом история разработки игры на OpenGL + Free Pascal, эксперименты с LZO, обход багов компилятора FPC для uFMOD, простейшая генерация текстур и досадный баг на видеокартах NVidia, который все испортил.

Видео, бинарник для Windows и исходный код также прилагаются — ищите в конце статьи.
Читать дальше →

SSLR: Screen Space Local Reflections в AAA-играх

Reading time6 min
Views83K
image

Привет, друг! В этот раз я опять подниму вопрос о графике в ААА-играх. Я уже разобрал методику HDRR (не путать с HDRI) тут и чуть-чуть поговорил о коррекции цвета. Сегодня я расскажу, что такое SSLR (так же известная как SSPR, SSR): Screen Space Local Reflections. Кому интересно — под кат.
Читать дальше →

Многозадачность в ядре Linux: прерывания и tasklet’ы

Reading time6 min
Views77K
Котейка и младшие братьяВ предыдущей своей статье я затронула тему многопоточности. В ней речь шла о базовых понятиях: о типах многозадачности, планировщике, стратегиях планирования, машине состояний потока и прочем.

На этот раз я хочу подойти к вопросу планирования с другой стороны. А именно, теперь я постараюсь рассказать про планирование не потоков, а их “младших братьев”. Так как статья получилась довольно объемной, в последний момент я решила разбить ее на несколько частей:
  1. Многозадачность в ядре Linux: прерывания и tasklet’ы
  2. Многозадачность в ядре Linux: workqueue
  3. Protothread и кооперативная многозадачность

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

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

Восстановление PDP 11/04. Терминал LA30 Decwriter

Reading time5 min
Views32K
Продолжение перевода статьи по восстановлению одной старой интересной машинки. В первой части наладили основной блок плат. Во второй — ленточную станцию TU60. Много тяжелых картинок. Курсивом мои комментарии.

LA30 Decwriter


Теперь я приступил к заключительной части своего квеста — раздобыть хороший терминал, который был бы таким же винтажным, как и основная система. Мне повезло, что у меня в хранении есть LA30, который я собираюсь теперь начать восстанавливать. Наш экземпляр был изготовлен в начале 1973. Хотя, печатающие головки, видимо, были заменены в 1979.

LA30, по-видимому, был одним из первых матричных принтеров, что делает его интересным, сам по себе, даже в отрыве от PDP-11.

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

Information

Rating
Does not participate
Registered
Activity