Search
Write a publication
Pull to refresh
1
0
Send message

Кроссплатформенный https сервер с неблокирующими сокетами. Часть 2

Reading time10 min
Views11K
Эта статья является продолжением статей:
Простейший кросcплатформенный сервер с поддержкой ssl
Кроссплатформенный https сервер с неблокирующими сокетами
В этих статьях я постепенно из простенького примера, входящего в состав OpenSSL стараюсь сделать полноценный однопоточный веб-сервер.
В предыдущей статье я «научил» сервер принимать соединение от одного клиента и отсылать обратно html страницу с заголовками запроса.
Сегодня я исправлю код сервера так, чтобы он мог обрабатывать соединения от произвольного количества клиентов в одном потоке.
Читать дальше →

Отличия сетевых вызовов Windows и Linux

Reading time4 min
Views22K
image
Во многом совместимые на уровне исходных кодов модели сокетов от Berkeley и Microsoft, на практике оказываются не такими уж кросплатформенными.

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

GCC x86, как уменьшить размер кода

Reading time4 min
Views32K
      Времена, когда программисты пытались выжать максимум из размера своего приложения, безвозвратно ушли. Основной причиной является существенное увеличение объемов оперативной памяти и дискового пространства на современных компьютерах. Немногие помнят, как при загрузке приложения с кассеты можно было пойти покушать. Или как можно было считать моргания дисковода, косвенно определяя размер приложения. Пожалуй, только разработчики програмного обеспечения под встраиваемые системы до сих пор заботятся о размере кода и потребляемой памяти. Могут ли таблетки и смартфоны вернуть разработчиков «назад в будущее»?
      Данная статья призвана помочь разработчикам програмного обеспечения, использующим GCC компилятор, уменьшить размер кода своих приложений. Все данные в статье получены при помощи x86 GCC компилятора версии 4.7.2 на операционной система Fedora 17 для архитектуры Intel Atom.
Читать дальше →

Оптимальные опции для x86 GCC

Reading time4 min
Views57K
      Распространено мнение, что GCC отстает по производительности от других компиляторов. В этой статье мы постараемся разобраться, какие базовые оптимизации GCC компилятора стоит применить для достижения приемлемой производительности.

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

Как я учил английский и программирование одновременно

Reading time5 min
Views83K
Шесть лет назад мне было 43 года, и я не умел программировать вообще. Ну, может немного на Бэйсике, который преподавали в институте, как вы понимаете, очень давно.

В книжном магазине попалась мне на глаза книга «Программирование для iPhone/iPad» и, будучи человеком любознательным, я решил попробовать. Купил книгу, MacBook Air (iPad у меня тогда уже был), установил XCode и начал с примеров из книги. Когда я получил общее представление о том, как что работает, мне захотелось сделать что-то полезное. Так как для программиста очень полезным, или скорее даже необходимым, является знание английского языка, я решил создать такое приложение.
Читать дальше →

Адаптивные сайты, или Как добиться благосклонности Google

Reading time8 min
Views41K


В конце июня в Москве прошла конференция Bitrix Summer Fest, на которой было представлено много интересных и полезных докладов. Чтобы этот кладезь мудрости не пропадал, мы будем публиковать в нашем блоге материалы по выступлениям с конференции. И начать мы решили с доклада Антона Герасимюка, посвящённого оптимизации скорости загрузки страниц.

21 апреля Google поменял алгоритм ранжирования поисковой выдачи для мобильных устройств. Многие владельцы сайтов и администраторы получили письма, в которых сообщалось, что «ваш сайт не оптимизирован под мобильные устройства». И после 21 апреля на всех сайтах, которые перестали удовлетворять новым критериями, стал падать поисковый трафик с Google.
Читать дальше →

Отказоустойчивость в MS SQL 2012 для 1С: Предприятие 8.2

Reading time10 min
Views52K
Многие в настоящий момент используют технологии отказоустойчивости при построении информационных систем и тема эта не нова. При этом обеспечение только отказоустойчивости уже не считается единственным и достаточным требованием. Идеальная система, на мой взгляд, должна быть
  • Отказоустойчива (обеспечение непрерывной работы системы в случае отказа составных ее составных частей)
  • С балансировкой нагрузки и высокой утилизацией ресурсов (при текущем функционировании равномерное распределение нагрузки и использование по возможности всех ресурсов, в том числе зарезервированных под отказ)
  • Легко расширяема (масштабируема)

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

Налоговый суслик. Особенности упрощенной системы налогообложения при работе по договорам с Apple, Google и другими

Reading time46 min
Views54K
В данной статье я постараюсь провести краткий юридический ликбез для разработчиков по некоторым положениям Гражданского кодекса, имеющим значение в контексте деятельности индивидуальных предпринимателей и организаций, применяющих упрощенную систему налогообложения, в работе по договорам с Apple, Google и другими компаниями, а также обратить внимание на некоторые не всегда очевидные налоговые нюансы, которые, как показал личный опыт изучения данной темы, довольно часто ускользают от внимания разработчиков или вызывают множество вопрос и споров.

Прочтите внимательно эту статью, если вы применяете упрощенную систему налогообложения с объектом налогообложения «доход» по ставке 6 процентов и продаете игры или приложения в Google Play, Apple App Store, а также прочий цифровой контент — например, 3D-модели — в Steam, Unity Asset Store или на других площадках, в условиях договоров с которыми фигурируют комиссии, агентские вознаграждения и прочие формы разделения выручки между сторонами.

Из материала вы узнаете:

  • Почему разработчику желательно обладать хотя бы базовой юридической грамотностью
  • Чем с точки зрения Гражданского кодекса являются игры и приложения и какие права на них есть у разработчиков помимо авторского права
  • Что такое агентский договор и почему все это важно при работе по договору с Apple или Google
  • Кто такой налоговый суслик и почему он может превратиться в пушного зверя
  • Какой «подвох» существует для применяющих «упрощенку» в части определения налоговой базы
  • Почему налог на добавленную стоимость (НДС) продолжает преследовать нас, даже когда мы не являемся его плательщиками
  • Как, с точки зрения Федеральной налоговой службы, облагаются НДС внутриигровые покупки (InApp Purchases)
Покажите мне суслика!

Fault detection на примере определения поверхности автономной машинкой

Reading time8 min
Views16K
Всем привет!

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

Так случилось, что в Новый Год у меня в руках оказалась китайская машинка на радиоуправлении. К сожалению, она не ездила. Чека из магазина у меня не было (машинка была подарком), да и, честно говоря, хотелось её разобрать и посмотреть на элементы схемы. Обычным способом схему было не достать, нужно было выпаивать. Пожалуй, в тот самый момент, когда я взялся за паяльник, я и понял, что вернуть машинку в магазин уже точно не получится. Короче говоря, всю зиму на моём подоконнике так и пылились запчасти, пока однажды мне на глаза не попалась статья от NASA про обнаружение разладки в марсоходе.

Только представьте на минуту: где-то далеко на красной планете едет марсоход, обвешанный датчиками, по поверхности, которую едва ли можно назвать дружелюбной. Поэтому нужно следить за тем, чтобы он не перевернулся, не застрял в песках, не скатился с горки, или наоборот на нее не заехал. Как это сделать? Вот на такой непростой вопрос мне и хотелось ответить.
Читать дальше →

Как красиво оформить публикацию на Хабре

Reading time7 min
Views46K
Публикация – основная единица связи автора с читателем. Практика показывает, что на Хабре можно разместить почти любой формат: небольшой анонс и лонгрид-обзор, интервью, фотоотчёт, трансляцию события, урок и многое-многое другое. Нередко успех публикации зависит и от её оформления – приятно оформленный материал читать одно удовольствие. В этой статье мы постараемся предоставить вам много полезных советов по хорошему оформлению материала.

И первый лайфхак – кликабельная картинка до ката, которая ведёт сразу внутрь публикации:


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

Взлом сайта и его последствия

Reading time8 min
Views159K


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

Робот-пылесос своими руками

Reading time5 min
Views26K
Как аппетит просыпается во время еды, так и желание создавать растет с количеством реализованных проектов. А последовательное использование изученных технологий повышает интерес и качество. Эта история началась с того, что я собрал 3D-принтер 3D MC3 Мастер v1.1 и сделал подвижные ушки с реакцией на звук.
А вот дальше захотелось не просто создать что-то занимательное, но и полезное. Поэтому я начал работу над созданием своего робота пылесоса и призываю все Хабрасообщество подключиться и помочь где-то советом, а где-то логикой и опытом.



Погрузиться в роботостроение

Искусство командной строки

Reading time15 min
Views251K


Вот уже как неделю английская версия the art of command line висит в секции trending на Github. Для себя я нашел этот материал невероятно полезным и решил помочь сообществу его переводом на русский язык. В переводе наверняка есть несколько недоработок, поэтому милости прошу слать пулл-реквесты мне сюда или автору оригинальной работы Joshua Levy вот сюда. (Если PR отправите мне, то я после того, как пересмотрю изменения отправлю их в мастер-бранч Джоша). Отдельное спасибо jtraub за помощь и исправление опечаток.

Enjoy!

Однако тенденция: MUD плавно начинают развиваться в Jabber вместо telnet

Reading time2 min
Views7.2K
Старожилы Интернета хорошо помнят, что первыми по-настоящему популярными многопользовательскими компьютерными играми были текстовые RPG, известные под сокращённым названием MUD (от английских слов «многопользовательское подземелье»). Передвижения и сражения персонажей происходили в них через подачу простых текстовых команд, и происходящее в игре поступало к игрокам в виде литературного текста, описывающего события. Обычным средством для связи игрока с игровым сервером в те годы был стародавний протокол telnet (технически одарённые игроки нередко использовали в игре не стандартный клиент telnet, а специализированные игровые текстовые консоли для MUD, обеспечивающие макроподстановки, горячие клавиши, и запись маршрута странствий, и подчас даже наскриптовывание автоматических действий — например, автоматизацию поедания пищи голодным персонажем).

В феврале 2010 года на Хабрахабре (в том же блоге «IM», где я сейчас это пишу) появилася блогозапись «„Снежки“ — мега-шутер в джаббере», автор которой (likegroof), в общем-то, перенёс в Jabber принципы MUD-боёвки: персонажи подают простые текстовые команды, сервер сообщает им о достижениях и состоянии персонажа. Это многие отметили тогда же и там же в комментариях.

В том же 2010 году некий DM, действующий под псевдонимом MuzzY, регистрирует домен JabberGames.Ru и создаёт джабберный MUD «Камень судьбы», в настоящее время довольно развитый — к нему даже существует плагин для QIP Infium, обеспечивающий графику:

[скриншот плагина]

В феврале нынешнего (2011) года Андрей Фоменко (вдохновлённый этими событиями давний любитель интерактивных текстовых игр) объявил в своём блоге о том, что и сам начал держать у себя дома на компьютере MUD для Jabber, открытый круглосуточно, где играют до 30 человек одновременно.

Да ведь это тенденция, господа.

Семь итераций наивности или как я полтора года свою дебютную игру писал

Reading time32 min
Views79K
imagination С появлением у меня в первом классе Dendy вопрос кем я стану отпал сам собой буквально через пару недель — программистом конечно же. Я долго и упорно шел к этому, невзирая на отсутствие информатики в школе, работал в техподдержке известного всем регистратора параллельно с учебой в институте, но полноценная жизнь началась лишь в тот момент, когда меня наконец-то взяли хоть куда-то писать код.

Очень скоро я понял, что мало быть программистом, работающим от звонка до звонка и получающим за это деньги на карточку — всё самое интересное начинается, когда решаешь сам без всяких архитекторов, тестировщиков и тимлидов что-нибудь этакое написать и заставить работать. Желательно что-нибудь веселое и захватывающее. Игру, например.

Под катом лежат семеро очевиднейших (как мне сейчас кажется) граблей, неожиданно вставших у меня на пути, а потому способных с отличной от нуля вероятностью встать на пути любого, идущего дорогой разработки игр.
Семь не слишком оригинальных мишеней для лба, разбавленных повествованием

Электроника для самых начинающих

Reading time6 min
Views71K
Стараюсь читать все статьи на Хабре по электронике для начинающих, DIY, Arduino. И вот только что прочитал статью «Ардуино. 6 шагов». Под впечатлением решил попробовать закинуть свои 5 копеек.

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

Когда 3D принтеры были большие: хроника лаборатории Мастер Кит

Reading time3 min
Views11K
В мае 2015 в лаборатории Мастер Кит был испытан новый 3D-принтер MC2.



К этому времени мы уже успели выпустить и закрыть MC3, след о котором остался на самом популярном ресурсе 3D печати Thingiverse.

Над дизайном MC3 работали три месяца. Было сделано 5 версий. Менялось расположение направляющих: вертикальное затем вновь горизонтальное. Механизм протяжки нити перемещался то к печатающей головке, то возвращался на дно. В одной из версий даже были установлены тефлоновые подшипники скольжения. Они оказались уж слишком прецизионные, требующие большего начального момента. Подбиралась площадь печати, менялась высота. Короче, опыта было мало, времени потратили уйму.
Читать дальше →

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

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



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

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

Автоматический поиск и выявление уязвимостей

Reading time3 min
Views7K


Большинство сайтов взламываются «в лоб» — злоумышленники используют популярные сканеры и утилиты, выявляют потенциальные уязвимости и эксплуатируют их.

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

Веселые старты или C++ и STL: кто быстрее?

Reading time4 min
Views20K

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


Нас интересует скорость различных стандартных инструментов C++ для выполнения однотипных операций над большим количеством элементов (циклы, алгоритмы STL, итераторы, указатели и т.д.). Для упрощения будем считать исходной задачу вычисления суммы большого количества целых чисел. (Ссылка для тех, кто не любит читать, а любит смотреть.)
Читать дальше →

Information

Rating
Does not participate
Location
Москва и Московская обл., Россия
Registered
Activity