Search
Write a publication
Pull to refresh
55
0
Variable name @kahi4

Database administrator

Send message

GIF изнутри

Reading time7 min
Views58K

Вам когда-нибудь было интересно, как устроены gif-ки? В данной статье попробуем разобраться с внутренним строением GIF-формата и методом сжатия LZW.

Структура GIF


Файл в формате GIF состоит из фиксированной области в начале файла, за которой располагается переменное число блоков, и заканчивается файл завершителем изображения.


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

Вероятность в квантовой механике. Откуда она взялась и как это упростить для понимания

Reading time15 min
Views32K

Введение


Эта статья рассчитана на людей, имеющих начальные знания по квантовой механике, обычно входящей в вузовский курс теоретической физики, а также живой интерес к ней. Квантовая механика, как матанализ, требует определенных начальных знаний, и без этого любое чтение будет либо беллетристикой, либо приведет к неправильным представлениям. Все обещания квантовой механики для всех и даром сродни социалистическим предвыборным лозунгам. Тем не менее эти необходимые знания не так велики, как может показаться, особенно для знающих математику. В начале изучения у многих возникает проблема — вероятностный смысл волновой функции и связанные с этим вещи: процесс измерения и гипотеза редукции волновой функции, трудны для понимания. Тем более, что в дальнейшем при решении задач этот вероятностный смысл или интерпретация, как правило, не требуются, поэтому многие даже не задумываются над этим. Тем не менее хотелось бы разобраться, откуда это взялось и зачем вообще нужно, и нужно ли вообще. Оказывается, что соображения, которые, вероятно, легли в основу столь сложных и противоречивых постулатов, утратили силу по мере прогресса квантовой электродинамики. Глубоких знаний для понимания не потребуется — можно просто поверить хорошо известным результатам из учебников, но начальный уровень все же необходим.

По проблеме интерпретации волновой функции споры велись с самого начала разработки квантовой механики. Наиболее известный – дискуссия Бора и Эйнштейна, длившаяся много лет. Интерпретация волновой функции, как амплитуды вероятности, разработана, в-основном, Борном [1] и дополнена Бором и Гейзенбергом [2] — физиками «Копенгагенской школы». В дальнейшем в литературе было принято название «Копенгагенская интерпретация», далее КИ. Я использую стандартные обозначения, принятые в «Курсе теоретической физики» Л.Д.Ландау и Е.М.Лифшица [3] и в большинстве других аналогичных учебников. Во второй части статьи предлагаются критические эксперименты, которые могли бы опровергнуть или подтвердить КИ. К сожалению, они неосуществимы технически в наше время.
Читать дальше →

Отладочная плата Orange Pi PC Allwinner H3 всего за $15

Reading time2 min
Views71K
Orange Pi PC Allwinner H3 Top

Ранее компания Shenzhen Xunlong Software CO. использовала процессоры Allwinner A20 и Allwinner A31s в отладочный платах Orange Pi. Но недавно компания представила модель Orange Pi PC на базе процессора Allwinner H3, которая стоит существенно дешевле предыдущих, и составляет $15. Низкая стоимость платы была достигнута, благодаря низкой цены самого процессора Allwinner H3, и составляет $6.
Читать дальше →

SoC: пишем реализацию framebuffer для контроллера в FPGA

Reading time13 min
Views34K


Приветствую!

В прошлый раз мы остановились на том, что подняли DMA в FPGA.
Сегодня мы реализуем в FPGA примитивный LCD-контроллер и напишем драйвер фреймбуфера для работы с этим контроллером.

Вы ещё раз убедитесь, что разработка под FPGA и написание драйверов под Linux дело очень простое, но интересное.

Также в конце есть маленький опрос — хочется узнать мнение сообщества. Если не сложно, прошу проголосовать.

Добро пожаловать

NES, реализация на FPGA

Reading time15 min
Views189K
Добрый день!

Я хочу рассказать о проекте игровой консоли Nintendo Entertainment System (NES) в реализации на FPGA. На постсоветском пространстве она известна как Dendy.

NES на ПЛИС
Желающих посмотреть видео и поностальгировать прошу под кат.
Ностальгировать

Функциональный DDS rенератор на ПЛИС

Reading time11 min
Views76K
Недавно я увидел проект генератора сигналов на микроконтроллере AVR. Принцип генерации — DDS, на базе библиотеки Jesper максимальная частота — 65534 Гц (и до 8 МГц HS выход с меандром). И тут я подумал, что генератор — отличная задача, где ПЛИС сможет показать себя в лучшем виде. В качестве спортивного интереса я решил повторить проект на ПЛИС, при этом по срокам уложиться в два выходных дня, а параметры получить не строго определенные, а максимально возможные. Что из этого получилось, можно узнать под катом

Что получилось?

Прелести интерфейса на частично перекрывающихся слоях

Reading time5 min
Views23K
Сегодня я расскажу как и зачем мы построили интерфейс нового сервиса Вирусдай на перекрывающихся слоях, как это сказалось на UX и как мы сформулировали принцип «Looks like an app. Works like an app».



За время, прошедшее с 2012 года мы несколько раз модернизировали как сам сервис, так и его интерфейс. Однако, всему однажды приходится сказать «прощай» и идти дальше. Настал момент, когда ни архитектура, ни интерфейс сервиса уже не отвечали нашим запросам. Нам предстояло превратить простой антивирус для сайтов в нечто большее – в целый набор связанных и удобных инструментов для лечения и защиты сайтов. Назревало только одно решение – делать новый сервис «с нуля». Архитектура, технологии, сценарии, интерфейсы – все должно было быть абсолютно новым. Нашей главной целью было достижение максимального уровня комфорта для пользователя при работе с новым сервисом.

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

Описание цифровых автоматов на VHDL

Reading time12 min
Views60K

Немного теории


Цифровой автомат (ЦА) — это устройство, которое осуществляет прием, хранение и преобразование дискретной информации по некоторому алгоритму и может находиться в одном из нескольких устойчивых состояний [7].



Рисунок 1 — Граф цифрового автомата
Читать дальше →

Настоящие ассоциативные массивы в JavaScript

Reading time4 min
Views59K
Использование литерала объекта, как простого средства для хранения пар ключ-значение давно стало обычным делом в JavaScript. Тем не менее, литерал объекта всё же не является настоящим ассоциативным массивом и по этому, в некоторых ситуациях, его использование может привести к неожиданным результатам. Пока JS не предоставляет нативную реализацию ассоциативных массивов (не во всех браузерах, по крайней мере), существует отличная альтернатива объектам, с нужной функциональностью и без подводных камней.
Читать дальше →

Введение в дискретно-ориентированные многогранники для задачи определения столкновений

Reading time5 min
Views35K


Обнаружение столкновений (collision detection) виртуальных объектов является довольно значимой частью для задач визуализации.
Читать дальше →

Перспективные матрицы в графическом API или дьявол прячется в деталях

Reading time10 min
Views63K
В определённый момент у любого разработчика в области компьютерной графики возникает вопрос: как же работают эти перспективные матрицы? Подчас ответ найти очень непросто и, как это обычно бывает, основная масса разработчиков бросает это занятие на полпути.

Это не решение проблемы! Давайте разбираться вместе!
Читать дальше →

Сделай сам: MSc Computer Science на уровне топ американских университетов из дома

Reading time12 min
Views164K

Вступление


Давно хотел написать статью про образование в Computer Science, но руки не доходили. Решил все-таки это наконец сделать. Итак, о чем пойдет речь? Речь о том, что из себя представляет диплом MSc Computer Science топовых университетов США (во всех подробностях, включая основные курсы, книги и проекты) и как ему соответствовать.

Почему именно MSc? Это — некая развилка: с одной стороны после MSc — вы уже готовый к жизни инженер (да, речь идет о инженерной подготовке, как мне кажется это самое больное место в нашей системе образования), с другой — можно спокойно идти по пути PhD. Как известно, в PhD программу можно попасть и не особо умея программировать — особенно это касается теоретического Computer Science. С другой стороны найти работу программиста тоже дело не очень сложное, и часто не требует мощного образования. Но достигнув уровня MSc — вы получаете возможность разбираться как во всех новый идеях в Computer Science, так и возможность их воплотить в практику. То есть с одной стороны круто разобраться в каком-нибудь deep learning и сделать в нем что-то новое, а также взять и написать свою операционную систему (кто так сделал?). Причем вы не зажаты в рамки узкой специализации (если конечно продолжаете учиться). То есть вы теперь — универсальный солдат, готовый на все.

Надеюсь что эта статья будет полезна:
1. Студентам, которые хотят соответствовать высоким стандартам топ вузов США, или собирающиеся туда в аспирантуру по Computer Science
2. Профессионалам, которые хотят закрыть «дыры» и пробелы
3. Может кто-то из преподавателей возьмет на заметку для своих курсов.
4. Студентам, аспирантам американских вузов — хотелось бы тоже получить фидбэк, особенно касается последних трендов в образовании

Что же здесь будет написано? Минимум философии и общих мыслей: конкретная программа undergraduate и graduate курсов, конечно из дисциплин наиболее мне близких. Все курсы были лично прочувствованы на собственной шкуре, по этому и пишу. (Я пытался записаться на все интересные курсы, которые были, но мой основной упор — системное программирование, базы данных и искусственный интеллект. Отсюда конечно некий bias, но пытаюсь предложить более-менее универсальную программу).
Читать дальше →

Как работает мозг?

Reading time8 min
Views120K
Этот пост написан по мотивам лекции Джеймса Смита, профессора Висконсинского университета в Мадисоне, специализирующегося в микроэлектронике и архитектуре вычислительных машин.

История компьютерных наук в целом сводится к тому, что учёные пытаются понять, как работает человеческий мозг, и воссоздать нечто аналогичное по своим возможностям. Как именно учёные его исследуют? Представим, что в XXI веке на Землю прилетают инопланетяне, никогда не видевшие привычных нам компьютеров, и пытаются исследовать устройство такого компьютера. Скорее всего, они начнут с измерения напряжений на проводниках, и обнаружат, что данные передаются в двоичном виде: точное значение напряжения не важно, важно только его наличие либо отсутствие. Затем, возможно, они поймут, что все электронные схемы составлены из одинаковых «логических вентилей», у которых есть вход и выход, и сигнал внутри схемы всегда передаётся в одном направлении. Если инопланетяне достаточно сообразительные, то они смогут разобраться, как работают комбинационные схемы — одних их достаточно, чтобы построить сравнительно сложные вычислительные устройства. Может быть, инопланетяне разгадают роль тактового сигнала и обратной связи; но вряд ли они смогут, изучая современный процессор, распознать в нём фон-неймановскую архитектуру с общей памятью, счётчиком команд, набором регистров и т.п. Дело в том, что по итогам сорока лет погони за производительностью в процессорах появилась целая иерархия «памятей» с хитроумными протоколами синхронизации между ними; несколько параллельных конвейеров, снабжённых предсказателями переходов, так что понятие «счётчика команд» фактически теряет смысл; с каждой командой связано собственное содержимое регистров, и т.д. Для реализации микропроцессора достаточно нескольких тысяч транзисторов; чтобы его производительность достигла привычного нам уровня, требуются сотни миллионов. Смысл этого примера в том, что для ответа на вопрос «как работает компьютер?» не нужно разбираться в работе сотен миллионов транзисторов: они лишь заслоняют собой простую идею, лежащую в основе архитектуры наших ЭВМ.

Моделирование нейронов


Кора человеческого мозга состоит из порядка ста миллиардов нейронов. Исторически сложилось так, что учёные, исследующие работу мозга, пытались охватить своей теорией всю эту колоссальную конструкцию. Строение мозга описано иерархически: кора состоит из долей, доли — из «гиперколонок», те — из «миниколонок»… Миниколонка состоит из примерно сотни отдельных нейронов.



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

Оформление научных результатов: интеграция LaTeX и Gnuplot

Reading time6 min
Views45K
«Если ваш единственный инструмент — молоток, то каждая проблема становится похожей на гвоздь»

Абрахам Маслоу


Введение


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

И вот, ты на 100% использовал возможности посетившей тебя «эврики», закончил основную работу и пришла пора опубликовать свои результаты в журнале, доложить их на конференции, да и просто порадовать своего научного руководителя/консультанта красивым отчетом. И ты приступаешь к мучительной фазе оформления статьи/доклада/отчета. И насколько мучительной будет эта фаза, зависит от того, какие инструменты ты решил использовать для этой работы.

Вспоминаю времена, когда молодым и глупым аспирантом, я писал первый вариант кандидатского «кирпича», предназначенный для тщательного «вычитывания» мной и моим научным руководителем. Тогда я не знал о формате EPS, а поэтому экспортировал графики, построенные в Maple в *.bmp-растр и вручную… обводил их в MS Visio для последующей вставки в Word. Были и другие, не менее топорные глупости. Не удивительно, что тогда я проклял всё, и дал себе слово следующую диссертацию писать совершенно по другому.

Путем последовательных итераций, на сегодняшний день я пришел к такому вот решению:



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

Краткий курс компьютерной графики: пишем упрощённый OpenGL своими руками, статья 5 из 6

Reading time11 min
Views67K

Содержание основного курса




Улучшение кода






Official translation (with a bit of polishing) is available here.




Пришла пора веселья, давайте для начала смотреть размер текущего кода:
  • geometry.cpp+.h — 218 строк
  • model.cpp+.h — 139 строк
  • our_gl.cpp+.h — 102 строки
  • main.cpp — 66 строк


Итого 525 строк. Ровно то, что я обещал в самом начале курса. И заметьте, что отрисовкой мы занимаемся только в our_gl и main, а это всего 168 строк, и нигде мы не вызывали сторонних библиотек, вся отрисовка сделана нами с нуля!
Я напоминаю, что мой код нужен только для финального сравнения с вашим работающим кодом! По-хорошему, вы всё должны написать с нуля, если следуете этому циклу статей. Очень прошу, делайте самые безумные шейдеры и выкладывайте в комментарии картинки!!!


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

Бесплатная регистрация в Windows Store для студентов и выбор банковской карты

Reading time3 min
Views65K
Совсем недавно Windows Store стал открыт для всех разработчиков. Я хочу поделиться своим опытом бесплатной регистрации в Windows Store через DreamSpark как студент и рассказать о преимуществах и особенностях использования виртуальных банковских карт.


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

Ускорение загрузки Windows for fun and profit

Reading time4 min
Views811K
image Пожалуй, начну с того, что если перегружаться 15 раз в год, то любой «тюнинг» процесса загрузки отнимает больше времени, чем будет выиграно на перезагрузках за все время жизни системы. Однако, спортивный интерес берет свое, тем более, что люди интересуется процессом оптимизации быстродействия. А загрузка оказалась самым очевидным кандидатом в примеры того, как на мой взгляд должен выглядеть этот самый процесс. Сразу скажу, что грузиться будем с 5400 rpm винта, грузиться будем в «рабочую» систему: помимо недобитой вендорской крапвари там стоит еще куча всякого типа вижуал студии, антивируса, скайпа, стима, гуглапдейтера и пр…

Про то, почему отключение pagefile-а скорее вредно, чем полезно — как нибудь в другой раз, а пока…
Под катом много однообразных картинок и немножко унылого текста

Загрузка Windows 7 с VHD-образа

Reading time3 min
Views93K
В прошлый раз мы создали VHD-образ с Window 7 для Virtual PC. Понятное дело, что в виртуальной среде, конечно, есть свои преимущества, но тем не менее, хотелось бы, чтобы все работало пошустрее…

В случае с Window 7, также хотелось бы увидеть ее во всей красе, как минимум с запущенным aero-интерфейсом.

Далее речь пойдет о том, как загружаться с полученного VHD-образа наравне с установленной базовой системой. То есть для работы с системой не понадобится отдельный раздел и не нужно будет сносить существующую систему, Win 7 будет по прежнему храниться внутри VHD-файла, но в то же время она будет запущена в реальном окружении.

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

Собеседование на должность JavaScript разработчика

Reading time4 min
Views288K


Недавно прочитал неплохой пост на тему поиска работы QA и подумал, что похожий пост был бы полезен для JavaScript разработчиков. В конечном счёте, веб движется вперед семимильными шагами, и соискателей на позицию JavaScript программиста хоть отбавляй (разумеется, хороших всегда меньше).
Читать дальше →

Руководство по basis.js. Часть 1: Начало работы, представления, модули, инструменты

Reading time22 min
Views26K

basis.js – JavaScript-фреймворк для разработки одностраничных веб-приложений, ориентированный на скорость и эффективность. Возможно он пока не такой популярный. Но благодаря моим выступлениям на различных конференциях и meetup'ах, некоторые уже слышали о нем и заинтересовались. Однако, чтобы начать использовать фреймворк или разбираться в нем, большинству не хватает руководства.

И вот, собрав волю в кулак (ну какой программист не любит писать документацию?), я сел писать руководство. Просто, доступно, последовательно.

Написав первую часть, я дал прочесть другим. Они прочитали и убедили меня, что это обязано быть опубликованным на Хабре. Ведь, что может лучше рассказать об инструменте, чем примеры его использования?

В первой части руководства будет рассмотрено как начать работать с basis.js и какие инструменты можно использовать. В качестве примера будет создано несколько простых представлений, затронут вопрос модульности и организации файлов проекта.

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

Information

Rating
Does not participate
Date of birth
Registered
Activity