Как стать автором
Обновить
26
0
Дмитрий @coffeecupwinner

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

Отправить сообщение

Twitter следит за тобой, анонимус

Время на прочтение4 мин
Количество просмотров41K
Часто приходиться слышать о том, что крупные корпорации вроде Google, Facebook или LG следят за каждым пуком несчастных пользователей. И исследовав некоторое из их software, я должен признать что таки да — они следят.

Вчера я исследовал самый свежий (на момент написания этой статьи) официальный iOS-клиент Twitter версии 5.13.1. Мне, кроме всего прочего, было интересно посмотреть на трафик между клиентом и сервером. Поскольку клиент Twitter использует certificate pinning, его трафик довольно трудно перехватить с помощью Fiddler2 и подобных программ. Поэтому я написал define-команду для GDB, которая цепляется на точку останова в [NSURLConnection start] и дампит в консоль интересные мне поля NSURLConnection непосредственно перед вызовом этого самого start. Такой нехитрый в общем-то фокус позволяет видеть что именно программа посылает на сервер ещё до того как это «что именно» будет зашифровано для дальнейше передачи по HTTPs.

И знаете что я увидел? Клиент Twitter, кроме своих обычных запросов (регистрация пользователя, авторизация, твит и т.п.) часто… нет, не так… очень часто отсылал на сервер POST запросы на некий загадочный URL api.twitter.com/1.1/jot/client_event. Эти запросы шли на сервер почти по любому поводу. Я запустил клиент — запрос пошел. Я нажал кнопку «Sign in» (ещё не залогинился, просто кнопку жмакнул) — запрос пошел. Вылез экран логина, поле «Username» получило фокус — запрос пошел. Я свернул клиент — запрос пошел… Я конечно удивился и полез разбираться.
Разобраться
Всего голосов 136: ↑107 и ↓29+78
Комментарии51

Руководство по разработке модулей расширений на C# для Visual Studio 2005-2012 и Atmel Studio

Время на прочтение86 мин
Количество просмотров43K
Плагины для C#

Аннотация


Около года назад мы опубликовали в блоге цикл статей о разработке плагинов для Visual Studio на языке C#. Сейчас мы переработали эти материалы, добавили новые разделы и предлагаем вашему вниманию новый вариант руководства.
Читать дальше →
Всего голосов 55: ↑50 и ↓5+45
Комментарии6

Итоги 21-го конкурса IOCCC

Время на прочтение4 мин
Количество просмотров23K
Объявлены победители 21-го международного конкурса обфусцированного кода на C. Как обычно, участники удивили способностью втиснуть совершенно невероятные вещи в программы до 4096 байт. Чтобы получить максимальное удовольствие, организаторы конкурса рекомендуют смотреть версию без спойлеров и пытаться понять по коду программы, что она делает.

Например, что делает такая программа?
             main(l
        ,a,n,d)char**a;{
    for(d=atoi(a[1])/10*80-
   atoi(a[2])/5-596;n="@NKA\
  CLCCGZAAQBEAADAFaISADJABBA^\
  SNLGAQABDAXIMBAACTBATAHDBAN\
  ZcEMMCCCCAAhEIJFAEAAABAfHJE\
  TBdFLDAANEfDNBPHdBcBBBEA_AL\
   H E L L O,    W O R L D! "
     [l++-3];)for(;n-->64;)
        putchar(!d+++33^
             l&1);}

Ответ
Правильно, печатает карту мира.



И не просто печатает, но ещё отмечает на карте место (символ " или # с координатами, которые можно указать при запуске).
Кстати, это «лучшая маленькая программа» на IOCCC 1992 года.

Другие спойлеры
Всего голосов 59: ↑56 и ↓3+53
Комментарии27

Git up и все все все

Время на прочтение2 мин
Количество просмотров26K
Комманда git up (аналог svn up) добавляется так:
git config --global alias.up '!(git add . && git stash && git pull --rebase >&2) | grep -v "No local changes to save" && git stash pop'

git up при надобности ныкает все ещё незакоммиченные изменения в stash, обновляет локальную ветку до свежайшей и восстанавливает локальные изменения назад. В том числе переносит ещё неотправленные локальные коммиты в самый конец, делая историю линейной как в Subversion, т.е. избегая лишних веток и merge-коммитов.
Читать дальше →
Всего голосов 98: ↑88 и ↓10+78
Комментарии64

Компиляция пакетов

Время на прочтение2 мин
Количество просмотров33K
В Ubuntu используется философия пакетного менеджмента, то есть все программы ставятся из пакетов deb, в которых хранится, собственно сама программа и скрипты, которые корректно ставят/удаляют/обновляют. Пакеты deb можно найти в сети Интернет, на дисках. Самый лучший способ использовать репозитории, хранилища deb пакетов. Если использовать репозитории, то при появлении в них новых версий установленных у вас программ, вам будет проще и быстрей обновить их. Это очень удобно и позволяет держать систему актуальной и защищенной. Иногда требумой программы в репозитариях нет и приходится компилировать из исходников. Но это надо делать правильно.
Сегодня я хочу предложить изящный метод, не раз помогавший мне.
Читать дальше →
Всего голосов 81: ↑57 и ↓24+33
Комментарии44

Обратная сторона луны

Время на прочтение14 мин
Количество просмотров47K
При написании приложений, одной из важнейших вопросов являются потребление памяти и отзывчивость (скорость работы).

Считается, что сборщик мусора – черный ящик, работу которого нельзя предугадать.

А еще говорят, что GC в .NET практически не настраиваемый. А еще, что нельзя посмотреть исходники как классов .NET Framework, так и CLR, GC и т.п.

А я скажу как бы ни так!

В данной статье мы рассмотрим:
  • структура организации размещения объектов в памяти
  • CLR 4.5 Background Server GC
  • правильная настройка сборщика мусора
  • эффективный апгрейд приложений до .NET 4.0+
  • правильное ручное управление памятью

Читать дальше →
Всего голосов 138: ↑132 и ↓6+126
Комментарии28

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность