Как стать автором
Обновить
0
0

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

Отправить сообщение

Видео всех лекций с «Курсов информационных технологий» от «Яндекса»

Время на прочтение1 мин
Количество просмотров30K
Для тех, кто не смог посетить Курсы информационных технологий, видеоролики всех лекций выложены в свободный доступ. Это лекции по полтора-два часа на базовые темы: операционные системы; архитектура ЭВМ; устройство GNU/Linux; системы хранения данных; файловые системы; сети и протоколы; виртуализация; безопасность.
Читать дальше →
Всего голосов 116: ↑101 и ↓15+86
Комментарии39

Шаблонизаторы для PHP, обзор принципов.

Время на прочтение6 мин
Количество просмотров2.1K
У таких статей обычно плохая судьба на Хабре.
«Шаблонизаторы», в особенности «шаблонизаторы для PHP» — встретив эти слова в заголовке темы на форуме, названии статьи или записи в блоге, можно быть уверенным — очередной холивар где-то рядом. В чем причина?
Постараюсь не скатиться до банальностей
Всего голосов 3: ↑3 и ↓0+3
Комментарии7

Сайт с визуализацией работы большого количества протоколов

Время на прочтение1 мин
Количество просмотров1.7K

Ссылка

http://www.visualland.net/

Картинка




Примеры визуализаций

Все.
Всего голосов 132: ↑125 и ↓7+118
Комментарии15

Как получить и измерить высокоскоростное соединение по TCP

Время на прочтение7 мин
Количество просмотров61K
Надежная передача данных в Интернете осуществляется на базе протокола TCP (Transmission Control Protocol), спецификация к которому была опубликована почти 30 лет назад. Алгоритм TCP (RFC793), позволяет подключенному устройству адаптироваться для работы в сети на скоростях в пределах десятков мегабит в секунду и задержки до 100 секунд. С бурным развитием новых технологий передачи данных, уже через 10 лет после внедрения стало ясно что производительность протокола не будет хватать для более широких каналов.
Читать дальше →
Всего голосов 106: ↑105 и ↓1+104
Комментарии41

Нейронные сети и распознавание символов

Время на прочтение7 мин
Количество просмотров125K
В последнее время на Хабре появилось, а также существует много содержательных статей, описывающих работу и принцип понятия “нейронная сеть”, но, к сожалению, как всегда очень мало описания и разбора полученных практических результатов или их не получения. Я думаю, что многим, как и мне удобней, проще и понятней разбираться на реальном примере. Поэтому в данной статье постараюсь описать почти пошаговое решение задачи распознавания букв латинского алфавита + пример для самостоятельного исследования. Распознавание цифр с помощью однослойного персептрона уже сделано, теперь давайте еще разберёмся и научим компьютер распознавать буквы.
Немного желания и можно начинать...
Всего голосов 92: ↑75 и ↓17+58
Комментарии57

Несколько советов молодым программистам, решившим написать свою операционную систему

Время на прочтение3 мин
Количество просмотров9.3K
Здравствуйте, уважаемые читатели!

Писали ли вы когда нибудь операционную систему? Вероятно, каждый десятый программист, заглянув лет на 10-20 назад и вспомнив начало своей карьеры, ответит — да. Господа, эта статья не для вас. Это статья для тех, кто верит в свои силы и полон надежд завоевать мир. Я постараюсь предостеречь вас от некоторых характерных ошибок.
Читать дальше →
Всего голосов 159: ↑132 и ↓27+105
Комментарии76

Как Facebook разрабатывает код

Время на прочтение8 мин
Количество просмотров2.5K
Перевод оригинальной статьи.

Как Facebook разрабатывает код


Я очарован тем, как работает Facebook. Это очень уникальный социум, не легко воссоздаваемый (и их метод не работал бы для всех компаний, даже если бы они попытались). Это заметки, накопленные из разговоров со многими друзьями из Facebook о том, как компания разрабатывает и выпускает программные продукты.

Прошло более шести месяцев с момента, как я собрал эти наблюдение, и я уверен, что даже сейчас Facebook постоянно совершенствует свои методики разработки ПО. Так что эти заметки, возможно, немного устарели. А также, похоже, что культура Facebook, управляемая разработчиками, получает всё большее внимание общественности. Так что я чувствую себя теперь более комфортно, выпуская эти заметки… ОГРОМНОЕ спасибо многим людям, которые помогли собрать воедино это представление о Facebook изнутри! Также выражаю благодарности людям epries и fryfrog, которые внесли исправления и отредактировали.

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

Читать заметки
Всего голосов 112: ↑80 и ↓32+48
Комментарии44

Развертывание Mercurial репозиториев через FastCGI с использованием Nginx на FreeBSD

Время на прочтение5 мин
Количество просмотров1.7K
Поддался я влиянию моды и захватывающим перспективам DVCS с недавних пор. Это вытолкнуло меня с наезженной колеи Subversion + Trac и заставило искать новые схемы как хранить исходные тексты в разных компаниях. И предоставлять для них удобный доступ разработчикам, заказчикам и другим заинтересованным личностям.

Так сложилось, что я специализируюсь во FreeBSD и не так хорошо разбираюсь в Linux'ах. И еще предпочитаю где можно использовать Nginx вместо Apache httpd. Поэтому решил я сделать для себя унифицированную архитектуру, которая позволит хранить неограниченное количество репозиториев и разграничивать для них доступ различных группам людей на этой платформе.

Само собой, Bitbucket — наше все. Но у любого разработчика есть закрытые проекты, которые в паблик выкладывать не хотелось бы. Можно, конечно, платить $50 в месяц за возможность хостить 25 проектов на bitbucket'е. Я лично считаю, что лучше эти деньги потратить на dedicated сервер и поднять себе сколько угодно проектов. Будет не так удобно, но зато свое и с возможностью тюнинга, бекапа и других вкусностей.

Читать дальше →
Всего голосов 11: ↑9 и ↓2+7
Комментарии2

NDIS. Введение

Время на прочтение4 мин
Количество просмотров24K
Собственно, как и обещал, начинаю цикл статей о подсистеме NDIS и о том, что с ней связано. Решил связать его с процессом собственного обучения на своей первой работе. Если цикла не получится, значит меня загрузили по самые уши, или вообще уволился.

Вступление



Для чего, вообще этот NDIS? Зачем его придумали, если и всё и так хорошо?

NDIS — это одна из подсистем ядра Windows, которая имеет прямое отношение к спектру начиная от драйверов сетевых карт и заканчивая интерфейсами для протоколов сетевого уровня. NDIS состоит из т.н. стека драйверов (хотя, как по мне, так это никакой не стек, а очередь), но для общего понимания лучше представлять себе это так:

image

Читать дальше →
Всего голосов 54: ↑45 и ↓9+36
Комментарии15

Альтернативные аллокаторы памяти

Время на прочтение13 мин
Количество просмотров91K
Написал Стивен Тови в 2:29 утра по программированию (шутка юмора Google Translate)
Вступление от себя: эта заметка, прорекламированная Алёной C++, предназначена в основном разработчикам игр для консолей, но будет, наверное, полезна и всем, кому приходится сталкиваться с экстремальным аллоцированием динамической памяти. Возможно, любители посравнивать управление памятью в C++ и Java тоже найдут над чем задуматься.

Оригинал с небезынтересной дискуссией в комментариях: altdevblogaday.org/2011/02/12/alternatives-to-malloc-and-new


Обязательная вступительная басня

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

Сейчас объясню, почему...
Всего голосов 75: ↑72 и ↓3+69
Комментарии59

Экспериментальное определение характеристик кэш-памяти: практикум

Время на прочтение9 мин
Количество просмотров5.9K
Первая статья об экспериментальном определении характеристик кэш-памяти появилась на свет несколько необычным образом. Играясь с утилитами из lmbench, я получил те самые три графика, и задался вопросом, сколько же информации об исследуемой системе можно из них вытянуть. Определив некоторые характеристики кэша и TLB, я затем задал эти графики студентам как домашнее задание — предвкушая, что им удастся обнаружить что-то такое, что я проглядел. В целом, студенты меня разочаровали, и не заметили даже связь ассоциативности с наклоном ступенек на графике. В конце семестра я собираюсь рассказать им своё решение; а чтобы оно к тому времени не забылось, я написал на скорую руку ту статью.

Затем Yekver предложил мне идею простой программы для Windows, которая определяла бы характеристики кэша автоматически, не требуя ручного анализа графиков. (Тем более, что версии lmbench для Windows не существует.) Для замера времени будем использовать функцию __rdtsc, которая возвращает 64-битное количество тактов с момента последнего сброса процессора. Сначала определим тактовую частоту процессора, замерив на произвольной нагрузке время выполнения и количество потребовавшихся тактов. Затем для расчёта времени доступа к памяти будем делить количество потраченных тактов на тактовую частоту процессора.

Подобно прошлому эксперименту, мы будем брать данные различного объёма от 4КБ до 512МБ, и проходить по массиву миллионы раз с последующим усреднением результата. Чтобы минимизировать влияние дополнительных операций в цикле нагрузки, следуя примеру авторов lat_mem_rd, используем для тела нагрузки операцию p=(void**)*p;, которая компилируется в одну машинную команду, и развернём её 256 раз, чтобы возврат к началу цикла выполнялся относительно редко.
Читать дальше →
Всего голосов 23: ↑22 и ↓1+21
Комментарии21

Организация командной разработки структур баз данных

Время на прочтение8 мин
Количество просмотров2.4K
Недавно в нашей организации очень насущным стал вопрос командной разработки (около 10 человек) схемы данных для БД Oracle. Работали мы по-старинке с помощью небезызвестного продукта Erwin семейства 3.5.x и до поры до времени были вполне удовлетворены его возможностями, разместив файлик в централизованной системе управления версиями и блокируя его по мере надобности, тем самым избежав коллизий параллельной разработки. Но всё течёт, всё меняется, команда разрастается, да и XXI век на дворе, вот и решили мы воспользоваться более современными средствами. Собственно ниже представлен рассказ о процессе перевода схемы в новый формат (хотя и того же производителя) и организации средств коллективной разработки и поддержки версионности, разбавленный рассуждениями о продукте в целом и паттернами использования его в нашей работе в частности. Без подводных камней описанный процесс не прошёл, так что возможно опыт подобного перехода будет кому-то полезен.
План повествования:
  • Рассуждения о продукте, замечания на тему шаблонов использования, ругань на форматы.
  • Подготовительные работы, шаманство в БД.
  • Организация командной разработки, оптимизация быстродействия.

Читать дальше →
Всего голосов 32: ↑23 и ↓9+14
Комментарии26

Некоторые идеи написания искуственного интелекта для шахмат

Время на прочтение7 мин
Количество просмотров20K
К сожалению, для шахмат пока нет лучших алгоритмов, чем перебор очень многих позиций. Правда, перебор порядком (и не одним) оптимизированный, но все же это большой перебор. Для поиска ответного хода строится дерево с исходным ходом в корне, ребрами — ходами-ответами и узлами — новыми позициями.

image

Как в элементарных алгоритмах выбирается следующий ход объяснить просто. На своем ходе вы выбираете такой ход (по вашему мнению), который принесет наибольшую пользу (максимизирует вашу выгоду), а противник на очередном своем ходе старается выбрать ход, который принесет ему больше всего пользы (максимизирует его выгоду и минимизирует вашу). Алгоритм с таким принципом называется минимакс. На каждом этапе вы присваиваете каждому узлу в дереве оценку позиции (об этом потом) и на своем ходе ее максимизируете, а на ходе противника — минимизируете. Алгоритм во время работы должен пройти по всем узлам дерева (то есть по всем возможный игровым позициям в игре), то есть совсем непригоден по времени.
Следующее его усовершенствование — альфа-бета отсечение (метод веток и границ).
Читать дальше →
Всего голосов 56: ↑49 и ↓7+42
Комментарии26

Экспериментальное определение характеристик кэш-памяти

Время на прочтение6 мин
Количество просмотров5.1K
В ряде случаев (например, для тонкой оптимизации программы под конкретный компьютер) полезно знать характеристики кэш-подсистемы: количество уровней, время доступа к каждому уровню, их размер и ассоциативность, и т.п.
Для одноразовой оптимизации необходимые значения можно посмотреть в спецификации на компьютер, но когда требуется автоматическая оптимизация (например, во время сборки и установки программы), характеристики приходится определять косвенно, по результатам прогона специального набора тестов.
Удобная тестовая программа для Linux — lat_mem_rd из пакета тестов lmbench. Её работа заключается в том, что она выделяет в памяти массив и читает его элементы с заданным шагом, циклически проходя по массиву снова и снова. Затем выделяется массив большего размера, и т.д. Для каждого значения шага и размера массива подсчитывается среднее время доступа.
Пример графика, который был получен этой программой на реальной системе:

Как по полученным данным определить характеристики кэша?
Всего голосов 33: ↑33 и ↓0+33
Комментарии10

Новый тип памяти удивляет даже его изобретателей

Время на прочтение2 мин
Количество просмотров2.8K
image

Обычно фундаментальные открытия в физике опережают их практическое применение. В наше время, когда серьёзная наука в упадке, зачастую дело обстоит совсем наоборот. Вот и инженеры IBM, создав два с половиной года назад рабочий, по их словам, прототип нового типа энергонезависимой памяти Racetrack memory столкнулись в итоге с удивительными физическими явлениями. Как оказалось на практике, процесс воздействия на магнитные спины электронов в носителе информации имеет «массу» и, следовательно, инерционен.

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

Сюрприз оказался в том, что «движение» доменов не начиналось сразу после подачи импульса и также не прекращалось после снятия управляющего напряжения.
Читать дальше →
Всего голосов 112: ↑102 и ↓10+92
Комментарии117

Концепт сенсорного управления на планшете

Время на прочтение1 мин
Количество просмотров2.1K
В Google Chrome вкладки расположены сверху по причине удобства: можно увести курсор впритык до края экрана, особо не целясь, и переместить или переключить вкладку. По этой же причине удобны более длинные отображения запущенных приложений на панели задач. На планшетных нетбуках, с одной стороны, смысл в подобных функциях интерфейса пропадает, но всё же постоянное присутствие рук или стилуса на экране отвлекает.

Смысл концепта заключается в том, что по краям некого планшетного нетбука расположены сенсорные полосы для реакции прилегающих элементов интерфейса (вкладки, полоса прокрутки, запущенные приложения, кнопки.., т.е. что угодно, прилегающее к соответствующему краю).
Читать дальше →
Всего голосов 30: ↑23 и ↓7+16
Комментарии20

Визуализация работы веб-сервера Apache — logstalgia

Время на прочтение1 мин
Количество просмотров15K
image

Logstalgia скорее порадует разработчиков и системных администраторов, которые много времени проводят на «заднем дворе» сайтов, но сам результат работы программы очень красив и видео будет интересно посмотреть всем. Данная программа визуализирует работу веб-сервера Apache используя log-файлы. По ссылке видео, а саму программу можно скачать по здесь.
Всего голосов 101: ↑96 и ↓5+91
Комментарии57

Доброкнижка про HTML5 от Google

Время на прочтение1 мин
Количество просмотров2.3K
Пока в интернетах идут войны на тему HTML5, убьет он Flash или нет, компания Google выпустила онлайн книгу 20 Things I Learned About Browsers & The Web. И это действительно книга!

Ребята создали веб-приложение, напоминающее детскую книгу, ее можно листать, оставлять закладки, а посвящена она веб-технологиям.
Читать дальше →
Всего голосов 121: ↑111 и ↓10+101
Комментарии90

История создания Ubuntu

Время на прочтение5 мин
Количество просмотров16K
История Ubuntu берёт своё начало в апреле 2004-го. Но прежде чем рассказать о самой Ubuntu, стоит упомянуть о некоторых ключевых фигурах и событиях, которые предшествовали её появлению.

Марк Шаттлворт


Ни одна история Ubuntu не может быть полной без истории своего основателя — Марка Шаттлворта.

Марк Шаттлворт на МКСМарк Шаттлворт родился в 1973-м году, в городе Велком провинции Фри-Стейт, ЮАР. Он посещал авторитетный колледж Diocesan и получил докторскую степень в области финансов и информационных систем в Университете Кэйп-Тауна. В этот период, Марк был страстно увлечён компьютером и стал активным участником сообщества Open Source. По крайней мере косвенно, он принимал участие в проектах Apache и Debian, и был первым человеком, который загрузил веб-сервер Apache, вероятно наиболее важное серверное приложение для платформы GNU/Linux, в архивы проекта Debian.

Увидев возможности и потенциал интернета, Шаттлворт основал в своём гараже центр сертификации и компанию по интернет-безопасности, названную Thawte. За несколько лет он вырастил Thawte во второй по величине центр сертификации во всём интернете, уступив лишь киту безопасности — компании Verisign. К слову, продукты и сервисы Thawte были построены и обслуживались свободным программным обеспечением. В декабре 1999-го, Шаттлворт продал Thawte компании Verisign за сумму, которая не разглашается, но которая, по слухам, составила порядка нескольких сотен миллионов американских долларов.

С такой фортуной в молодом возрасте, Шаттлворт мог бы наслаждаться безбедной жизнью. Но вместо этого, он решил реализовать свою заветную мечту — отправиться в космическое путешествие. После оплаты порядка 20 миллионов долларов русской космической программе и посвятив около года на подготовку, включая изучение русского языка и тренировки в Звёздном городке, Шаттлворт реализовал мечту в качестве гражданского космонавта на борту русского Союза TM-34. Шаттлворт провёл 2 дня в ракете Союз и 8 дней на Международной Космической Станции, где принимал участие в экспериментах, посвящённых изучению СПИДа и генома. В начале мая 2002-го, Марк Шаттлворт вернулся на Землю.

В дополнение к исследованию космоса и увеселительной поездке в Антарктику, Шаттлворт играл активную роль как филантроп и венчурный капиталист. В 2001-м, Шаттлворт основал Фонд Шаттлворта (Shuttleworth Foundation, TSF), некоммерческую организацию, расположенную в Южной Африке. Фонд был основан для финансирования, разработки и внедрения инноваций в области образования. Разумеется, в качестве средств, с помощью которых TSF пытался достичь своих целей, применялось и свободное программное обеспечение. В рамках этих проектов, организация стала одним из самых видных сторонников СПО в Южной Африке и вообще в мире. В области венчурного капитала, Шаттлворт оказывал содействие научным исследованиям, разработкам и предпринимательству в Южной Африке со стратегическими инъекциями денежных средств в стартапы через новую фирму венчурного капитала, названную HBD, что означает «Here Be Dragons» («Тут Драконы»). В этот период, Шаттлворт был занят мозговыми штурмами для своего следующего крупного проекта, который в конечном счёте станет Ubuntu.
Читать дальше →
Всего голосов 201: ↑189 и ↓12+177
Комментарии120

50 цитат о программировании всех времён

Время на прочтение6 мин
Количество просмотров161K
Перевёл после прочтения комментариев к статье «О ненависти к C++». В цитатах можно найти ответы на большинство возникших там вопросов.

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

49. Lisp — это не язык, а строительный материал.
— Alan Kay

48. Ходить по воде и разрабатывать программы, следуя спецификации, очень просто… если они заморожены.
— Edward V Berard
Читать дальше →
Всего голосов 344: ↑336 и ↓8+328
Комментарии136

Информация

В рейтинге
Не участвует
Дата рождения
Зарегистрирован
Активность