• Безопасность исключений в С++. Часть 1

    Этим постом я хочу начать цикл постов об исключениях в C++. В данном цикле я сделаю попытку обобщить известный мне опыт работы с исключениями, а также осветить вопросы, связанные с эффективностью и безопасностью их использования. Помимо этого дать практические рекомендации, которые помогут устранять возможные частые ошибки при использовании исключений, и раскрыть возможности STL и Boost по их поддержке. В этом первом посте я хочу ответить на вопрос:

    А нужны ли исключения в принципе?
    Читать дальше →
  • Много слов о простой игре

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

    Что на старте?


    Я имел неглубокий опыт в программировании, немного писал на php, javascript, vba. Также по предыдущим профессиям у меня был опыт работы с Adobe Photoshop. На основании этого я сделал вывод, что смогу своими силами написать небольшую мобильную игру.

    Александр Сергеевич для привлечения внимания:

    image

    Если интересно, что из этого вышло, прошу под кат…
    Читать дальше →
  • Правила по оптимизация кода (для начинающих)

    Долго думая над темой для первой статьи, пришел к решению описать некоторые полезные правила по оптимизации C++ кода. Статья рассчитана для начинающих, но, возможно, освежит память засидевшимся программистам выше уровня Junior.

    В современном мире начинающие программисты почти не уделяют времени на изучение каких-либо правил по оптимизации и времени выполнения программного кода. Ведь производительность компьютеров достигла высокого уровня и даже не оптимизированный код выполняется довольно быстро. Но квалификация программиста зависит не только от умения писать работающий код. С точки зрения железа, компьютер — это устройство, а у каждого устройства есть срок его работы. Если измерять время работы компьютера в количестве выполненных операций, то не оптимизированный код уменьшает жизнь устройству. Мы, как программисты, должны ориентироваться на конечного пользователя — значит должны думать не только о своем продукте, а и об устройстве нашего клиента. Так давайте не будем заставлять компьютеры перебирать бесконечное множество не нужных байт информации.
    Читать дальше →
  • Россия на карте в Твиттере, Аляску нам вернули!

    Продолжая баловаться на тему сращивания карт Google Maps и социальных сетей, добрался до Twitter. Даже простенький клиент состряпал. Для запроса ленты твиттов конкретного пользователя используется простое API, благо документации предостаточно.

    Но работать с API можно и не напрямую а через красивую, но не без косяков конечно, обертку Fabric. В итоге обращение для получения ленты твитов будет выглядеть примерно вот так:

    Twitter.getInstance();
    final StatusesService service = Twitter.getApiClient().getStatusesService();
    service.userTimeline(.....
    
    public void success(Result<List<Tweet>> result) {
    
    result.data.get(i).place.boundingBox.coordinates.......
    

    В результате мы имеем массив твитов List(Tweet). Каждый твит содержит два типа геоданных, либо точные координаты:

    result.data.get(i).coordinates....
    

    Либо описание локации:

    result.data.get(i).place
    

    В котором есть массив из 4-х точек ограничивающих эту локацию.

    result.data.get(i).place.boundingBox.coordinates....
    


    К точным координатам претензий нет, а вот Локация под именем «Россия» вызвала, мягко говоря, удивление. Сначала я заметил, что твиты из этой локации отображаются от Гренландии до Финляндии включительно. И начал разбирать ситуацию подробно.
    Читать дальше →
  • Решение проблемы с портами в Windows 10

    Установил по предложению от Microsoft версию Win10. Раньше стояла Win7 забирала значительно больше места на главном диске. Установил из соображений экономии и так — попробовать, что за «зверь».

    На 7ке стоял XAMPP работал без проблем, порты 80 и 443 были открыты и все отлично работал. После установки 10ки обнаружил проблему — запускаются все службы кроме Apache. Проверил все что смог найти и в первую очередь скайп — так и не нашел проблемы. Изначально Windows10 дружит со всеми нормальными приложениями и в Firefall все действия XAMPP были разрешены по умолчанию.
    Много времени потратил на поиск приложения, использующего 80й порт, но все безуспешно. После нескольких попыток и различных вариантов решений наткнулся на следующую статью: habrahabr.ru/post/145189.

    Пробовал различные варианты, но в итоге, спас этот:
    Читать дальше →
  • SMS аутентификация и воровство SIM карт – как с этим жить?


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

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

    Кому-то есть до этого дело?
    Читать дальше →
  • SNI или тебует ли OK.RU особой микроразметки?

    Наша schema.org микроразметка проходит валидацию в Google и Yandex валидаторах. А также вот этот валидатор отдаёт нам следующее сообщение об успехе:

    The document is valid HTML5 + ARIA + SVG 1.1 + MathML 2.0 (subject to the utter previewness of this service).

    Когда мы публиковали новость в G+, а там, насколько нам известно, используется именно SСHEMA, карточка рендрится нормально. Одинаково хорошо карточка рендрится и для Facebook.

    Пример валидируемых URL:

    odrive.info/content/8_World-Wide-Web-Skate-Spots или odrive.info/content/10_Чёрноморские-аквапарки-2015

    Но для ok.ru этого, как выяснилось, недостаточно, и они отдавали нам малоинформативное уведомление: Failed to attach the link. Please, make sure the link is correct and try again.
    Читать дальше →
  • Вчера ты просто тракторист, а завтра супер программист

    Я давно хотел рассказать свою историю, но то откладывал, то боялся комментариев, то забывал.

    Вдохновившись историей пользователя vhuman, я решил рассказать вам свою.

    Первое мое знакомство с компьютером было в далеком 1996 году. В то время моя сестра сошлась со своим будущим мужем, переехала к нему в город, и я иногда приезжал к ним в гости, чтобы поиграть в Duke Nukem и Doom2 (это единственные на тот момент игры, которые мне нравились). Через какое-то время я понял, что играть в игры мне не особо интересно. Мне хотелось что-то делать в компьютере и понять, как это работает. Но это всё осталось только на уровне желания, и интерес к компьютеру постепенно угас.
    Читать дальше →
  • Повышение эффективности выполнения зависимостей в Ansible

    Поговорим сегодня о ускорении выполнения «сложных» ролей с кучей зависимостей.

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

    Собственно для себя решил найти рабочее решение вопроса.
    Читать дальше →
  • Судьба спортивного программиста

    imageМое детство прошло в Таганроге почти полностью, учился в обычной школе. В эти годы я в основном общался с ровесниками, но были и друзья старше. Увлекался баскетболом, компьютерными играми и ничем больше. Так вышло, что я учился не в том классе, где учились «лучших из лучших». Взятые мной третьи и вторые места на олимпиадах, которые проводили в школе по математике, оставались без внимания. Даже сейчас не могу понять почему. Во всем всегда я старался разбираться сам. Примерно в 6 классе мной ко мне проявил интерес учитель, который преподавал у нас информатику. Его звали Пивень Александр Геннадьевич. Он сказал мне, а давай позанимаемся языком Pascal. На третьем его уроке в задаче была большая физическая формула. Я очень не любил физику на тот момент и в панике сбежал. После, в 7 классе, Александр Геннадьевич дал мне другую задачу: посчитать 2 в степени 300.
    Читать дальше →
  • Мониторинг и управление Thinstation 5.x

    Хорошему админу как обычно делать нечего, всё работает.

    Вот я от скуки и вспомнил давнишнюю полезняшку и давай её внедрять. Как оказалось — ничего сложного ни в установке, ни в конфигурировании нет, а вещь нужная, может кому ещё пригодится.

    Полезняшка называется TSmon — система мониторинга и управления Thinstation. Найти её можно здесь, лицензия GNUтая, но качать не стоит, по умолчанию — не работает, т.к. много изменений в TS. Вот рабочий вариант.
    Читать дальше →
  • Как пробить «карьерный потолок», никуда не вставая из своего кресла

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

    Из советов, которые давались — переедь в ХХХ (более крупный город), почитай книжек, сдай экзамены и поменяй работу, как результат «улучшения знаний». В то же время, другие говорили о том, что работодатели делятся на две группы — энтерпрайз болото (в котором якобы все, что нужно — это сертификаты) и работодатели-практики, которым нужен реальный опыт.

    Я хочу немножко поведать о возможностях развития (со своей колокольни UNIX админа, разумеется), которые, как мне кажется, могут дать несколько новую перспективу тем кому кажется, что из их «болота» выхода нет.
    Читать дальше →
  • Установка Kali Linux по сети для самых маленьких (PXE Boot)

    Panasonic CF-28Задача по установке Kali Linux на старенький ноут (Panasonic Toughbook CF-28), не имеющий дискового привода и, как оказалось, не умеющий загружаться с USB-флешки, имела единственное решение — установка по локальной сети. Этот процесс описан для продвинутых пользователей в официальной документации Kali Linux, но некоторые моменты пришлось обойти более очевидными путями. Подробности — под катом.
    Читать дальше →
  • Альтернативная концовка ИТ-индустрии вместе с ActionScript

    image

    Уже долгие годы Windows занимает в мире подавляющую долю на рынке операционных систем. Ее ближайшему конкуренту, операционной системе Maс OS, устанавливаемой на компьютерах компании Apple, досталась совсем незначительная часть рынка, а операционной системе Linux – и того меньше. Иными словами, говоря «домашний» или «рабочий» компьютер, мы явно подразумеваем компьютер, на котором установлена та или иная версия Windows.

    Очевидно такой колоссальный успех связан с возможностью разработки своего программного обеспечения для Windows.
    Читать дальше →
  • Ещё один способ снижения потребления оперативной памяти Skype

    • *
    В сети много уже встречалось жалоб на чрезмерную прожорливость Skype, только вот работающих решений маловато. Случайно нашёл ещё одно, решил поделиться. У меня Skype версии 7.8.0.102, Windows XP SP3 Home Edition. Диспетчер задач для Skype показывает потребление памяти колеблется в пределах 10-100 М, но это ещё не всё. Оказалось, что после запуска Skype резко возрастает показатель «Память ядра (выгружаемая)» (в том же диспетчере задач), примерно на 200 М. После завершения Skype — память освобождается. Зачем ему столько памяти — не знаю, пробовал просто заблокировать выделение — начинаются глюки с прорисовкой экранов.

    Но нашёлся другой способ.
    Читать дальше →
  • Bug в iOS



    Здравствуйте.

    Наверное многие знают о том, что в ipad или iphone, можно любую html-страничку (сайт) превратить в псевдо-приложение, которое будет по клику (на предварительно созданную иконку) разворачиваться на весь экран.
    Читать дальше →
  • Баг, который ломает адаптивность сайта

    Сегодня я верстал шаблон сайта, который должен быть адаптивным. Для адаптивности я использовал в CSS Media Queries. Чтобы не мучится, я подключил Twitter Bootstrap, в котором имеется замечательная модульная сетка. И все прекрасно верстается.

    После полной верстки, появилась необходимость схлопнуть выпадающее меню в кнопку-бутерброд (или кнопка-гамбургер, кому как). И все эти махинации должен выполнять javascript. Для того, чтобы определить размер экрана, я использовал значение document.documentElement.clientWidth. Руками вынул из хрома граничные значения медиазапросов и подставил их в сравнение с полученным значением из javascript. Ура, все заработало. Теперь на моем мобильнике меню-бутерброд.

    Но не тут то было. На ноутбуке я обнаружил, что есть размер окна, при котором уже наступили медиазапросы большего диапазона, а меню-бутерброд не пропадает. Я излазил весь код, но бага не нашел. Тогда я открыл заново Хром и начал ресайзить окно. Бинго. Медиазапрос измеряет ширину окна с скроллбаром, а javascript без него. И что же делать?
    Читать дальше →
  • Скайп и зебра

    image

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

    Вот и сегодня.
    Читать дальше →
  • SMS уведомление о перебое питания используя Asterisk + Dongle и apcupsd

    Нужно чтобы на мобильный приходило смс в случае исчезновения и возобновления питания на сервере. Есть Freebsd демон apcupsd управления ИБП APC и asterisk с подключенными к нему GSM модемами.
    Читать дальше →