Search
Write a publication
Pull to refresh
169
0
Владимир @Dreadatour

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

Send message

STM32F1xx — лечимся от ардуинозависимости вместе

Reading time14 min
Views269K
Добрый день, уважаемые хабровчане!
После длительного перерыва, связанного с защитой дипломного проекта в Бауманке, я снова вернулся к написанию статей. Так как с недавнего времени я занялся 32-битными микроконтроллерами серии STM32F на ядре ARM Cortex-M3, об этом и пойдет мой рассказ. Мне статья поможет систематизировать знания об этих замечательных микроконтроллерах, а вам, я надеюсь, послужит одной из ступеней на пути к их использованию и развеет страхи и сомнения, которые всегда возникают после уютных 8-битных AVRок при упоминании страшных 32-битных монстров.
Итак, почему Cortex, чем же плохи АVR?
Читать дальше →

Создаем чат на Node.js и Socket.IO

Reading time5 min
Views228K
В данной статье я попытаюсь показать, как можно создать простой чат, используя Node.js в связке с Socket.IO. Изначально я хотел построить чат на чистых Websockets, но столкнулся с практически полным отсутствием готовых реализаций сервера для них в Интернете. Так что решил не изобретать велосипед, а использовать готовую библиотеку.
В моем случае сервер работает под Ubuntu, поэтому все примеры будут для неё (и ссылки в примерах — на него же).

Установка компонентов

Первым делом нам потребуются собственно Node.js (инструкция по инсталляции и ссылки на скачивание здесь) и Socket.IO. Модули для Node.js проще всего устанавливать, используя менеджер npm —
curl http://npmjs.org/install.sh | sh
npm install socket.io

Серверная часть

Структура серверной части такова: сервер принимает сообщение, если это команда — выполняет определенные действия, если просто сообщение — рассылает всем остальным участникам.
Читать дальше →

How to по деревьям на jQuery

Reading time5 min
Views7.3K
Часто встречаются задачи, в которых требуется отобразить древовидную структуру взаимосвязей каких-либо сущностей. Например, навигация по файловой системе, меню сайта или содержание учебника.
image
Самым простым вариантом отобразить древовидную структуру в HTML являются списки. Но нас интересуют деревья, обладающие динамическими свойствами. Без javascript тут не обойтись. Так как решение нужно обычно быстро, то использование jQuery позволяет создавать динамические деревья, экономя прилично времени на кодинге. Чтобы сэкономить себе еще кучу времени идем на поисковик и ищем подходящее решение. В целом часто на этом дело создание дерева на сайте и ограничивается, но бывают ситуации, когда дерево подходит, но не имеет какой-то маленькой фишки и тут уже ни чего не остается, кроме как модифицировать имеющиеся дерево.
Читать дальше →

Настраиваем окружение на Mac OS и собираем автономное приложение с PySide/PyQt

Reading time5 min
Views28K
image
Сейчас все удобнее становится использовать HTML и JavaScript в интерфейсах приложений. И именно такая задача недавно появилась передо мной, с одним важным условием — на выходе должно быть полностью standalone приложение, не требующее установки дополнительных библиотек и способное запуститься в обычном пользовательском окружения.

В силу своего природного обаяния в качестве основного языка был выбран Python + PySide c WebKit на борту, для сборки app-бандла использовался py2app.

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

Пьеса «Разработка многопользовательской сетевой игры.» Часть 2: Это страшное слово «протокол»

Reading time7 min
Views19K


Часть 1: Архитектура
Часть 3: Клиент-серверное взаимодействие
Часть 4: Переходим в 3D

Итак, продолжим создание многопользовательской игры.
Сегодня мы рассмотрим создание протокола передачи данных.
А также создадим заготовки TCP сервера и соответственно клиента.

Добро пожаловать в зрительный зал.

Флаги 254 стран одним спрайтом

Reading time1 min
Views16K
Однажды, nickivanov нарисовал миниатюры для кучи разных флагов и выложил их в свободный доступ. А недавно, artpolikarpov собрал их в один спрайт и написал к нему удобный css, который позволяет легко отобразить любой флаг просто указанием нужного класса.

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

И был бы этот топик топиком-ссылкой, да по необъяснимым причинам не разрешает Хабр в топиках-ссылках указывать авторов, заслуживающих похвал. Так что вот они ссылки:
Описание: artpolikarpov.ru/projects/flags
Архив с флагами: artpolikarpov.ru/projects/flags/flags.zip

Пишем одностраничный клиент на javascript

Reading time5 min
Views48K
Данная статья является вольным переводом. Оригинал тут.

Введение


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

Предлагаю ознакомиться с решением на базе backbone.js, underscore.js и jQuery, которое поможет решить эту проблему.

Постановка задачи


Каким бы мы хотели видеть наше приложение? Вот основные моменты, которые мне кажутся важными:
  1. Должен быть удобный способ описать модели нашей предметной области.
  2. Любые изменения в модели должны немедленно отражаться в пользовательском интерфейсе, если модель в нем представлена каким-либо образом.
  3. Понятная и легко-поддерживаемая структуризация кода в стиле MVC.


Попробуем решить эти задачи на примере простого приложения «Каталог фильмов».
Поехали!

Реализация серверной части в многопользовательских онлайн играх

Reading time3 min
Views16K
За свою недолгую жинь я ни разу не встречал программиста, который бы не любил игры. И уж тем более, программиста, который никогда их не писал.
Кто-то начинает с тетриса, кто-то со змейки. У кого-то это увлечение проходит, а кто-то этим «заболевает» и превращает свою болезнь в любимую работу или занятное хобби.

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

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

Есть ли серебрянная пуля анализа уязвимостей

Reading time9 min
Views2.6K
В комментариях к моей предыдущей статье amarao задал мне очень хороший вопрос. Он спрашивал, как именно, пользуясь какими правилами, мы ищем уязвимости в программном обеспечении. Приведу часть этого вопроса:
По каким алгоритмам, по каким правилам? Или это всё на наитии «а я знаю что такое mim!»? В этом случае метод не описывает ровным случаем ничего где-то — подумал, где-то нет.

Этим вопросом amarao, вольно или невольно, привлекает внимание к проблеме объективности при оценке уязвимости программного обеспечения, насколько эта оценка зависит, или не зависит, от эксперта, ее проводящего. Вопрос является очень важным, и поэтому часто возникает как у специалистов по безопасности, так и у наших клиентов.
Действительно, если мы не имеем возможности объективно оценить безопасность предлагаемых нам продуктов, то как мы можем выбрать из них один, наилучшим образом удовлетворяющий нашим потребностям? Все производители, естественно, будут клясться, что именно их продукт — самый безопасный из когда-либо созданных. Более того, каждый из них, возможно, будет в это верить, причем, верить с полным на то основанием.
Кажется, что оценка программного обеспечения независимыми компаниями — например, сертификация — может решить эту проблему. Но если не существует объективного средства анализа, то, как мы можем проверить качество самой оценки? Ведь оценка программного продукта в этом случае — сама по себе продукт, услуга.
Несмотря на то, что эти вопросы обсуждаются достаточно часто, я не видел однозначного ответа на них. Но за время моей работы в этой области у меня сложились определенные представления о возможностях современных методик.
В этой статье я хочу проиллюстрировать следующую свою мысль: сегодня не существует алгоритма поиска уязвимостей, который бы гарантировал объективную оценку безопасности. Поэтому доверие к продукту может основываться только на репутации экспертов, проводивших его оценку, и на опыте его эксплуатации (по сути, на репутации взломщиков, которые пытались преодолеть защиту).
Читать дальше →

Знакомство с межпроцессным взаимодействием на Linux

Reading time11 min
Views224K
Межпроцессное взаимодействие (Inter-process communication (IPC)) — это набор методов для обмена данными между потоками процессов. Процессы могут быть запущены как на одном и том же компьютере, так и на разных, соединенных сетью. IPC бывают нескольких типов: «сигнал», «сокет», «семафор», «файл», «сообщение»…

В данной статье я хочу рассмотреть всего 3 типа IPC:
  1. именованный канал
  2. разделенная память
  3. семафор
Отступление: данная статья является учебной и расчитана на людей, только еще вступающих на путь системного программирования. Ее главный замысел — познакомиться с различными способами взаимодействия между процессами на POSIX-совместимой ОС.
Читать дальше →

Выбираем микроконтроллер вместе

Reading time3 min
Views117K
Прочитав эту статью я заметил большой интерес к выбору микроконтроллера у читателей и решил взглянуть на эту проблему с другой стороны.
Могу предположить, что всех интересует выбор их первого, либо первого 32-х битного МК.
image
Тем, кто знает, что на фотографии нет ни одного микроконтроллера — прошу в комментарии, дополнить мой рассказ и тем самым поделиться своим опытом с начинающими. Остальным, непременно под кат!
Читать дальше →

Строю сайты! Like a boss

Reading time6 min
Views3.3K
Like a boss

www.youtube.com/watch?v=NisCkxU544c

Посмотрев презентацию Юрия (yrashk) с Erlang Conference о веб-фреймворках в эрланге я заинтересовался и решил сделать сайтик не на node.js, как намеревался изначально, а используя какой-нибудь эрланговский фреймворк.

В итоге я наткнулся на фреймворк Chicago Boss. Про сам фреймворк я слышал и раньше, но пользоваться пока не довелось.

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

Kango — фреймворк для создания кроссбраузерных расширений

Reading time4 min
Views8K

Вступление

Kango позволяет создавать расширения для популярных браузеров используя только JavaScript, причем код един для всех браузеров. На данный момент поддерживается Chrome, Firefox, Internet Explorer (в публичном доступе только версия с поддержкой Chrome и Firefox) и ведется работа над поддержкой Opera и Safari. Ниже будет рассмотрено как можно быстро создать простой кроссбраузерный Gmail Checker

Что должно получиться в итоге:



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

Разработка браузерной стратегии

Reading time7 min
Views37K
Всем привет!

Хочу поделиться с хабрасообществом своим опытом написания многопользовательской браузерной стратегии с нуля до рабочего проекта. С точки зрения непосредственно программирования, архитектуры и возникших проблем. Это мой первый опыт создания игры и возможно вы заметите множество недочетов или промахов, или посоветуете чего дельного. Но не суть важно — главное я довел дело до рабочего проекта и наверняка многим будет интересно узнать подробности.

image

Что представляет собой игра? Видимо наиболее коротким описанием будет «клон Цивилизации» =). Но это не значит что у меня не хватило фантазии придумать что-то свое. Просто сделать «Цивилизацию» было моей мечтой. Вряд ли бы я получил столько удовлетворения от написания другой игры. Ну а фанаты Цивилизации наоборот считают, что моя игра совсем не похожа на Цивилизацию, разве что только с виду. Может это и к лучшему.

Игра называется The Fate of Nation http://fatenation.com

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

Для создания игры я использовал php и MySQL на сервере, html и javascript на клиенте. Flash не используется. Из html5 есть только видео на сайте и несколько областей с канвасом в самой игре — включая поверхность карты и мини-карту. Объем кода клиентской части в несколько раз превышает серверную часть, поэтому в основном буду рассказывать о клиентской разработке, но начнем с сервера.

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

Делаем шифрование в Dropbox Mac (совместимо с Linux)

Reading time3 min
Views6.8K

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

Профили пользователей: плюсы, минусы, подводные камни

Reading time5 min
Views12K
Не секрет, что работу с профилями пользователей в Django иначе как несчастьем не назовёшь. Все мы сталкивались с монолитностью модели auth.User, неадкеватным набором полей у неё, а также всеми теми ухищрениями, к которым приходилось прибегать.

Извращаться приходилось всем: не только пользователям джанги, но и самим её core-разработчикам. Помните, например, как в Django 1.2 внезапно стало возможно использовать в поле username символы собаки (@) и точки? Знаете зачем? Чтобы в качестве логинов можно было использовать адреса e-mail.

Нам, простым пользователям, тоже жилось несладко. Для того, чтобы изменить профиль пользователя, добавив ему какие-нибудь интересных полей — обычная, казалось бы, вещь, да? — приходилось действовать разными способами.
Интересно?

Разбираем по кусочкам lincrackme3

Reading time3 min
Views3.2K
В отличие от Windows среда Linux не может похвастаться большим количеством разных трюков против отладки. Opensource и всё такое сыграли свою долю в этом. Среди дебаггеров
есть  gdb, но он очень легко обнаруживается простейшими техниками анти-отладки.

Соответственно не много известно протекторов способных сильно затруднить отладку бинарника, среди них можно вспомнить разве что 'shiva', но она уже давно «умерла».

Игрушкой сегодня для нас будет служить программка lincrackme3 с crackmes.de, она – не сложна и при этом,  в ней имеется несколько анти-отладочных трюков. Мы будем использовать  только дисассемблер – никаких отладчиков, ltracer-ов и тем более патчинга бинарника. Дисассемблером будет служить IDAPro 5.5.
Читать дальше →

Аккуратная настройка клавиатуры

Reading time4 min
Views31K
Вокруг нас появляется все больше людей, которые знают, чем дефис отличается от минуса, минус от тире, а знак дюйма от кавычек. Что там говорить, мне вчера секретарша прислала письмо, оформленное типографически точно. Для того, чтобы немного приблизиться к совершенству, не обязательно отягощать себя открытым окном «дополнительные символы» и унылым копипастом оттуда.
Большинство проблем в современных оконных менеджерах решается штатными средствами. Но что делать тем, кто хочет иметь возможность в одно нажатие набирать какие-нибудь экзотические символы, наподобие знака бесконечности (∞), интеграла (∫) или карточных мастей ()?
Под катом я расскажу и как настроить клавиатуру для правильной типографики («—») штатными средствами, и как расширить возможности до быстрого набора любых символов.
Поехали!

Плагины VIM о которых следует знать, часть 1: surround.vim

Reading time3 min
Views16K
Топик — вольный перевод статьи Vim Plugins You Should Know About, Part I: surround.vim Петериса Круминса.

UPD: вторая часть

Что такое плагин surround.vim? Вот что говорит о нем автор, Тим Поп (Tim Pope):

Surround.vim работает со всем, что «окружает»: скобками, кавычками, тегами XML и т.п. Плагин предоставляет сочетания клавиш, которыми можно легко удалять, изменять и добавлять пары таких окружающих элементов.
Читать дальше →

Information

Rating
Does not participate
Registered
Activity