Pull to refresh
-2
0
s5656 @s5656

Программист

Send message

Избавляемся от JavaScript в социальных кнопках (Facebook, VK, Twitter и др.)

Reading time5 min
Views78K
Как мы избавились от JavaScript-библиотек социальных сетей, ускорили скорость загрузки страниц и использовали RESTful API для “шаринга” и “лайков”.


Читать дальше →
Total votes 78: ↑73 and ↓5+68
Comments44

Сравнение пилотируемых космических кораблей первого поколения

Reading time7 min
Views92K

Интересно посмотреть, как разные люди решают одну и ту же задачу. У каждого есть свой опыт, свои начальные условия, но, когда цель и требования схожие, решения этой задачи функционально похожи друг на друга, хотя могут различаться в конкретной реализации. В конце 50-х годов и СССР и США стали разрабатывать пилотируемые корабли для первых шагов в космос. Требования были схожими — экипаж один человек, время нахождения в космосе — до нескольких суток. Но вот аппараты получились разные, и, как мне кажется, было бы интересно их сравнить.
Читать дальше →
Total votes 95: ↑92 and ↓3+89
Comments22

Как не стать спамером со своей уютной рассылочкой

Reading time1 min
Views67K
image
Пользователь когда-то подписался на рассылку, но уже забыл когда, и главное зачем. Теперь ежедневно к нему падает спам, а по собственному опыту он знает, для того чтобы отписаться нужно зайти по ссылке свой профиль, найти и снять там какую-то галку а главное, помнить свой логин и пароль на давно забытом им сайте.
Его действия? «В спам!»

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

И вот, с десяток таких «отписок» и гугл будет удобно отсортировывать ваши рассылки в папочку Спам (584), у ВСЕХ ваших подписчиков.

Однако многие из нас уже успели заметить: некоторые письма в Gmail при попытке отметить их «В спам!» САМИ предлагают отписаться от рассылки в один клик.

Эта фича была введена google более года назад, но лишь единицы рассылок научились ей пользоваться. И не удивительно. В рекомендациях по осуществлению массовых рассылок, лишь косвенно упоминается о том, что Вам нужно сделать.
А сделать нужно не многое.
Читать дальше →
Total votes 238: ↑230 and ↓8+222
Comments60

Почему C++ не подходит для написания графических пользовательских интерфейсов

Reading time5 min
Views19K

Я люблю C++, но...



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

Однажды я столкнулся с развивающейся библиотекой GUI класса. С точки зрения C++, а точнее его классов, экземпляров и иерархий, этот язык представляется невероятно близким к концепции управления GUI, в частности таким элементам, как виджеты, окна классов и подокна. OO модели C++ и оконной системы тем не менее разные. C++ был задуман как «статический» язык с охватом лексем, статической проверкой типов и иерархий определенных во время компиляции. Окна и их объекты с другой стороны, по своей природе динамичны, они обычно живут за рамкам отдельной процедуры или блока, с помощью которой были созданы; иерархии виджетов в значительной степени определены расположением, видимостью и потоками событий. Основы графического пользовательского интерфейса, такие как динамические и геометрические иерархии окон и управления, протекания событий, не поддерживаются непосредственно синтаксисом С++ либо его семантикой. Таким образом, эти функции должны быть воспроизведены в коде C++ GUI. Это приводит к дублированию графического инструментария, или функциональности оконного менеджера, код «раздувается», мы вынуждены отказываться от многих «сильных» особенностей C++ (например, проверки типов во время компиляции). В статье приведено несколько простых примеров C++ / GUI «не стыковок».
Читать дальше →
Total votes 55: ↑32 and ↓23+9
Comments48

Wikipedia через DNS

Reading time1 min
Views655
Как правило при наложении ограничений в локальных сетях администраторы оставляют открытыми, например, DNS или ICMP. Их можно чудесным образом использовать для связи с внешним миром.

Вот отличный пример занимательной инкапсуляции для демонстрации технологии «на пальцах»:

> nslookup -type=txt large_hadron_collider.wp.dg.cx

Server: rr0.mtu.ru
Address: 212.188.4.10

Неофициальный ответ:
large_hadron_collider.wp.dg.cx text =

"The Large Hadron Collider (LHC) is the world's largest and the highest-
energy particle accelerator complex, intended to collide opposing beams of proto
ns, from hydrogen atoms stripped of their electrons, or lead ions, two of severa
l types of hadrons, at o"
"ver 99.9999991% of the speed of light. httр://en.wikipedia.org/wiki/Lar
ge_Hadron_Collider"


страничка проекта
Total votes 78: ↑77 and ↓1+76
Comments27

Управление мощной силовой нагрузкой от микроконтроллера.

Reading time1 min
Views8.9K

Иногда нужно слабым сигналом с микроконтроллера включить мощную нагрузку, например лампу в комнате. Особенно эта проблема актуальна перед разработчиками умного дома. Первое что приходит на ум — реле. Но не спешите, есть способ лучше :)

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

Если речь идет о переменном токе, то лучше использовать симисторы или тиристоры. Что это такое? А сейчас расскажу. (Читать полностью)
Total votes 24: ↑20.5 and ↓3.5+17
Comments7

О микроконтроллерах

Reading time4 min
Views29K
Около 55% проданных в мире процессоров приходится на 8ми битные микроконтроллеры. Более 4 млрд. 8ми битных микроконтроллеров продано в 2006. Они установлены в микроволновках, стиральных машинах, музыкальных центрах… При этом они являются однокристальными компьютерами, со своим процессором, памятью, портами ввода-вывода. В статье я постараюсь кратко объяснить что это за звери и как их приручают.
Читать дальше →
Total votes 92: ↑86.5 and ↓5.5+81
Comments101

XNA 3D: введение в custom shader и чуть-чуть прототипа

Reading time11 min
Views29K


Привет, Хабрахабр! К сожалению, очень давно не писал на хабр. Личные дела совершенно были против того, чтобы сесть и написать пару статей по геймдеву. Может оно и к лучшему, за эти два года я набрался очень много опыта и всегда рад им поделиться. Стоит отметить, что я совершенно отказался от создания 2D игр: я не против их, но разрабатывать игры в 3D куда интереснее и веселее! По традиции — в качестве инструмента будет XNA 4.0, почему XNA 4.0 дорогой слушатель? А все потому, что, он до сих пор остается актуальной для инди-разработчиков. У нас есть язык с очень низким вхождением — C#. Есть тот самый фреймворк XNA с необходимыми начальными классами/структурами и алгоритмами. И есть DirectX с поддержкой шейдеров, вплоть до Shader Model 3.0. Если ты, %username%, читаешь меня впервые, то можешь прочитать заодно и мои статьи датированными 2012 годом. Не сказать, что они актуальны на все 100%, что в них нет ошибок, но определенную базу они могут дать. Как, наверное, понятно — я буду писать только о 3D: со списком тем я определился не до конца, но думаю, что сформирую их довольно быстро.

Пока точно задумал две статьи:
  • “XNA 3D: введение в custom shader и чуть-чуть прототипа”
  • “XNA 3D: HDR vs LDR, реализация HDR"


Сейчас сделаю введение в custom shader и реализуем простой прототип игры FEZ.
Читать дальше →
Total votes 60: ↑58 and ↓2+56
Comments11

HDR vs LDR, реализация HDR Rendering

Reading time8 min
Views88K


Как я и обещал – публикую вторую статью о некоторых моментах разработки игр в трех измерениях. Сегодня расскажу об одной технике, которая используется почти любом проекте ААА-класса. Имя ей — HDR Rendering. Если интересно — добро пожаловать под хабракат.
Читать дальше →
Total votes 177: ↑173 and ↓4+169
Comments63

Не дразните программиста

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

Вы устали? Хотите выпустить пар? Вам требуется передышка? Предлагаю вам присоединится ко мне, тем более, что на дворе пятница.
Читать дальше →
Total votes 424: ↑394 and ↓30+364
Comments126

Векторные иконки на HTML5 + JS

Reading time1 min
Views10K


На первый взгляд это обычные одноцветные иконки, но если призумить — их качество не ухудшится. Очевидный профит таких иконок: с ними можно свободно экспериментировать и не переживать за высоту и ширину, компактный вид, а не куча файлов в папке icons, ну и наверное маленький размер, хотя с этим поспорить можно. Есть некоторые ограничители в цвете, возможен один цвет либо градиент (но думаю с конвертером нарисованного вектора в js код, возможно и больше цветов)

Смотреть иконки

Если вы хотите использовать эти иконки или создавать свои на подобной основе, кликайте по иконке — внизу появится код выбранной иконки, он вставляется в:

paper.path(<код иконки>).attr({fill: "#000", stroke: "none"});

Поддержку иконок на себя берет Raphaël JS Lib

Источник
Total votes 88: ↑85 and ↓3+82
Comments45

Как я делал USB устройство

Reading time2 min
Views8.1K
Где-то когда-то я читал, что создатели первой спецификации USB намеревались сделать этот стандарт простым для реализации в железе за счет усложнения программного обеспечения. Таким образом цель была максимально удешевить производство и сделать USB устройства очень доступными. Сейчас можно сказать, что чипмейкерам это удалось, но так ли уж прост для реализации в железе этот стандарт? Боюсь, что ответ не очевиден.



Предположим мне нужно сделать свое простое USB устройство. Какие у меня есть варианты?
Читать дальше →
Total votes 173: ↑160 and ↓13+147
Comments51

10 рекомендаций по html-верстке электронных писем

Reading time4 min
Views106K
Рекомендация первая: забудьте про блочную верстку. Весь лэйаут должен быть на таблицах. При этом, без крайней необходимости — их тоже лучше не использовать. Также следует выкинуть из головы представления о семантике, сокращенных css-правилах, валидации, плавающих блоках — и прочее. Самый распространенный в РФ почтовый сервис на данный момент (mail.ru) вообще не понимает стили (css). Любые тэги/атрибуты style заменяются на xstyle и не работают. Вообще все.

Так что, фактически, при вёрстке html для почтовой рассылки надо мысленно переместиться в 90-ые годы прошлого века и смело использовать все распространенные приёмы того времени.

Для тех, кто с ними не знаком (как я был) — напомню:
Читать дальше →
Total votes 124: ↑111 and ↓13+98
Comments104

Грабли при верстке HTML писем

Reading time3 min
Views103K
Довольно часто наши клиенты устраивают регулярные рассылки с новостями. Почти всегда их не устраивают текстовые рассылки или простое оформление HTML рассылок. Наши дизайнеры вовсю креативят, а мы потом набиваем шишки при верстке их макетов с корректным отображением во множестве почтовых клиентов.

Ниже список встретившихся нам особенностей и способы их разрешения (как то упорядочить их мне не удалось, поэтому всё идет единым списком)
Читать дальше →
Total votes 282: ↑273 and ↓9+264
Comments77

Пишем Referrer tracker: мал да удал, с хранимыми процедурами MySQL

Reading time4 min
Views3.5K
Часто возникает желание посмотреть отуда приходят люди на ваш сайт, дабы пойти туда почитать что про нас любимых пишут, и рьяно вступить в полемику не отходя от кассы. Казалось бы, такая популярная штука как Google Analitycs должна делать это, но есть одна проблема — в отчете отрезаются GET-параметры, и если вы видите что ссылка с огромного форума, то вам еще предстоит найти нужную тему, что отнимает время (стоит упомянуть, что Google Analitycs требует дополнительного JS кода на страницах, что также отнимает время и трафик).
Дальше кратко про альтернативы и вперед изобретать велосипед
Total votes 46: ↑40 and ↓6+34
Comments52

Безразмерная разметка с помощью relative (без float)

Reading time2 min
Views4.1K
Навеянно этой темой.
Пример, как это работает.

1. Введение


Представим, мы имеем класс relative, внутри которого имеется текст, и не задаём ему width:
#bar{
position:relative;
border:5px solid #00FFFF;
padding:10px;
height:200px;
}
мы получим резиновый блок:
<div id="bar">
text
</div>


При этом, блок обладает неизменными padding+border и резиновым width, таким, что width_px+padding_px+border_px = 100%.
Для absolute блоков, такой трюк не прокатывает.
Читать дальше →
Total votes 74: ↑62 and ↓12+50
Comments77

Как делать качественные печатные платы в домашних условиях.

Reading time2 min
Views389K
Любой электронный девайс требует соединения воедино кучи деталей. Конечно, можно спаять девайс на монтажной плате, но при этом велик риск наделать кучу ошибок, да и сам девайс будет выглядеть весьма стремно. Торчащие во все стороны провода оценят только любители трешдизайна. Поэтому, будем делать печатную плату!

А чтобы тебе было проще, я сделал видео урок на тему изготовления печатных плат методом Лазерного Утюга ака ЛУТ.

Полный цикл, от подготовки платы с куска текстолита, до сверления и лужения.
Читать дальше →
Total votes 123: ↑117 and ↓6+111
Comments136

Иерархические структуры данных и производительность

Reading time14 min
Views22K

Введение



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

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

Читать дальше →
Total votes 123: ↑120 and ↓3+117
Comments27

Information

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