Search
Write a publication
Pull to refresh
3
0
Сергей @Vanger13

User

Send message

Покажи мне свои настройки, и я скажу, кто ты

Reading time5 min
Views3.6K
Добрый день, уважаемые хабравчане! Продолжаю радовать вас уникальными статьями по пользовательским интерфейсам с живыми примерами на русском языке. Сегодня мы будем обсуждать серебряную пулю разработки программного обеспечения — настройки приложений.

Что такое настройки, все себе более или менее представляют. Любой пользователь компьютера рано или поздно с ними сталкивается. Только не всегда победителем из этого столкновения выходит пользователь. Основных проблем, с которыми приходится иметь дело, три: нужную настройку трудно найти, нужной настройки нет, и не понятно, что делает та или иная настройка.

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

Алгоритмы поиска старшего бита

Reading time3 min
Views40K
Здесь я хочу рассказать и обсудить несколько алгоритмов для нахождения старшего единичного бита числа.

На всякий случай, поясню: старшим битом называется единичный бит числа, отвечающий за самую большую степень двойки. Иными словами, это самая большая степень двойки, не превосходящая числа. Чтобы избежать многих случаев, будем здесь считать, что мы имеем дело с натуральным числом в пределах от 1 до 2^31 — 1 включительно. Кроме того, чтобы не слишком углубляться в теорию вероятности, будем считать, что число, в котором требуется определить старший бит, с одинаковой вероятностью будет любым из возможных чисел.

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

int bit1(int x) {
   int t = 1 << 30;
   while (x < t) t >>= 1;
   return t;
}


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

The Secret of Kells

Reading time1 min
Views4K
Два дня назад мне посчастливилось увидеть фильм «The secret of Kells». И мне кажется, что это должны увидеть все, кто близок к анимации и графике. Потрясающий по своей красоте мультфильм с прекрасной музыкой. Манера съёмки, используемые приёмы — всё удивительно необычно. Я пересмотрел его дважды. Один раз ради сюжета, героев и музыки, а во второй я разглядывал каждый кадр, каждую закорючку и рисунок.
Ну и сюжет присутствует, причём не абы какой. Страны производители: Ирландия, Франция и Бельгия — и в речи присутствует интересный акцент. Смотреть рекомендую без перевода.


Под катом небольшой кусочек видео и песня лесной феи Эшлинг про кота Pangur Ban — персонажа Ирландской легенды.
Читать дальше →

Как учат информатике в Европе (и в Чехии в частности)

Reading time8 min
Views68K
Введение

Прочитав топик про образовательный процесс в МГТУ им. Баумана, я решила, что мне тоже есть что рассказать на эту тему. Я училась (собственно, еще формально учусь) в Карловом университете в Праге на физико-математическом факультете (на отделении информатики) и, думаю, многим, не только тем, кто подумывает об обучении за рубежом, будет интересно узнать, как же выглядит зарубежное образование для будущих программистов.

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

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

Как поступают в университеты США

Reading time6 min
Views43K
image
Статьи про обучение в США заинтересовали мою жену настолько, что она все таки решилась описать свои мысли и опыт. Она вообще не блоггер, но статья, надеюсь, получилась интересная:


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

Подсчёт времени выполнения метода через аннотацию

Reading time8 min
Views20K
Во многих проектах требуется посчитать время, которое затратил тот или иной метод. Для этого можно вручную сохранять значение System.currentTimeMillis() и после метода вычислять затраченное время. Когда методов много это становится не очень удобным.
Поэтому я решил написать простенькую аннотацию, которая бы считала время выполнения метода. Попытавшись найти информацию в интернете, понял, что её по данной теме очень мало. Придётся как-то выкручиваться, собирая информацию по крупицам.
Читать дальше →

Для преступников ботнет Зевс (ZeuS) становится все удобнее и удобнее

Reading time4 min
Views18K
Да, я знаю что недавно про него было, и скоро будет еще. Но вот что думают буржуины.

image
Какой-то ботнет

Краткая справка
  • № 1 в списке самых разыскиваемых ботнетов Америки
  • Зараженные компьютеры: 3.6 миллиона
  • Использование преступниками: воровство вводимой пользователем информации (кейлоггер), вставка поддельных HTML форм в системы онлайн-банкинга
За 10 000 $ можно приобрести модуль Зевса, дающий полный контроль над зараженными компьютерами
Читать дальше →

Сдача сессии по-английски

Reading time9 min
Views21K
Так получилось, что мне выдалась возможность поучиться в магистратуре в университете City University London. За полгода, которые уже прошли, я увидел много нового, в том числе то, как устроена местная система образования, и успел её оценить.

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

Так как сейчас у многих читателей Хабра сессия, я решил, что пост на эту тему мог бы быть кстати и хотел бы рассказать о том, каким образом в одном из ВУЗов Лондона проводятся экзамены, и как выставляются оценки за пройденные предметы.
Читать дальше →

Разработка на PC и производительность — Memory Latency

Reading time7 min
Views11K
Herb Sutter (автор Exceptional C++, бывший глава ISO C++ standards committee, мистер Free Lunch Is Over и прочая, и прочая) работает в Microsoft и иногда по средам читает атомные лекции.

Я наконец-то на одну такую попал, и очень радовался. На умных мужиков всегда радостно поглядеть и послушать.
Для отчета — кроме Херба, видел живого Олександреску и живого Walter Bright (который "D").

Лекция называлась «Machine Architecture: Things Your Programming Language Never Told You» (здесь можно скачать презентацию и видео) и была про конкретную часть abstraction penalty — Memory Latency.

Я попытаюсь коротко рассказать о ключевой мысли лекции. Она простая, очевидная и тысячу раз сказанная. Думаю, еще раз повторить азбуку — никогда не повредит.
Читать дальше →

Шпаргалка по расшифровке имен видеофайлов

Reading time8 min
Views310K
Как то стало интересно что значат разные буковки/цифарки через точку в названиях видеофайлов.

Пост — результаты гугления, обобщения, структуризации и некоторой правки орфографии.
Возможно, кому то пригодится. Я, например, перестал связываться с TC.
Читать дальше →

Дэн Пинк об удивительной науке мотивации

Reading time1 min
Views2K
Daniel Pink — автор книг и статей о современном подходе к бизнесу. Об одной из его книг как-то уже писали на хабре.

В этом коротком выступлении Daniel рассказывает о том, что «метод пряника» работает только для мотивации рутинного труда. А для сфер деятельности, требующих творческого подхода, не только не приносит пользы, но и делает работу менее эффективной. Он предлагает новые методы мотивации, которые сделали возможным появление таких продуктов как Wikipedia и Google Mail. И применение этих методов в будущем, возможно, сможет сделать мир немного лучше.

Вот версия выступления с русскими субтитрами.

А вот оригинал:

CPrompt — интерпретатор языка си

Reading time3 min
Views7K
С июня 2009 года я занимаюсь разработкой интерпретатора Си. (я уже упоминал об этом в статье о вызовах функций).
Сейчас уже реализовано достаточно много конструкций: циклы, выбор, вычисление выражений, вызовы функций (как объявленных пользователем, так и стандартных), инклуды и другое.
интересно?

Работа с ICQ в Java

Reading time8 min
Views7.9K

Предыстория


Как-то раз мы решили создать свой собственный микроблоггинг с блекджеком и шлюхами c шахматами и поэтессами. Сначала сделали сайт, но быстро стало понятно, что для реализации идеи его недостаточно. Необходимо было работать с сообщениями через Jabber и ICQ.
Начали с простого — с джаббера. Никаких проблем тут не возникло — мы писали на Java, поэтому прикрутили Smack API и все заработало. Но, как это не печально, но самым популярным IM протоколом все еще является ICQ…

Задача


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

Рассмотрим пути решения.
Читать дальше →

Комбинатор неподвижной точки

Reading time3 min
Views7.6K
Когда мне впервые задали вопрос о том может ли существовать функция вида Func<Func<T,T>,T> без использования конструкций вида default(T) он поверг меня в глубокий когнитивный диссонанс.
Как может существовать функция у которой неоткуда взять значения? Об очевидном варианте
T Fix<T>(Func<T,T> func){
   return func(Fix(func));
}
я не мог даже подумать. Разве возможно делать такие функции? Она будет вызываться бесконечно и не даст результата. В языках типа C# такая конструкция и правда вызовет зацикливание, но вполне может работать в языках вроде питона или хаскеля. Сейчас будет немного кода на Haskell, надеюсь синтаксис будет более-менее понятен всем.
Читать дальше →

Сайт для кофеманов и кофевуманов — Coffee Advisor

Reading time1 min
Views1.9K
Привет, друзья! С наступающим… бла-бла-бла. В этот снежный день мне страстно хочется отрекламировать свой новый сайт — сообщество любителей кофе Coffee Advisor (Варим.ру). У нас пишут не только о кофе (ещё про какао и вино, например), но центральная тема — конечно именно кофе.

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

Регистрация доступна только по приглашениям (во избежание засилья троллей), так что если хотите зарегистрироваться, отправьте адрес своей электропочты мне личным сообщением, и я выдам инвайт*. Да, если у вас ящик на Gmail’е, то придётся вытаскивать письмо из Спама :-(

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

Отладка Javascript

Reading time5 min
Views146K
Debug Logo

Многие задают мне один и тот же вопрос:
«Как дебажить этот $%*!%$! JavaScript?».

Так вот, во-первых JavaScript — не $%*!%$! А как я его дебажу — сейчас расскажу.

(Примечание: наверное эта статья больше для новичков. Так что не судите строго)

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

boolean — боремся за Java память…

Reading time2 min
Views36K
У Вас когда-либо случались такие ситуации, когда Ваше Java приложение трещит по швам? В моём случае это случилось из-за нехватки доступной оперативной памяти. И, естественно, обнаружилась нехватка в самый неподходящий момент: на носу очередной долгожданный релиз, один из серверов остановлен для обновления кода и данных и реинкарнация старого кода уже невозможна, в ближайшие дни запланировано несколько совещаний и собеседований, что сильно отвлекает от процесса оптимизации — в общем, ЧП не прошло незамеченным.

К слову сказать, сделай я правильный backup и экстренные работы по восстановлению жизнеспособности прошли бы гораздо более спокойно, но это была бы уже совсем другая история. Итак в моём распоряжении есть код, которому не хватает 15Gb оперативной памяти для нормального функционирования и очень длительный и дорогостоящий процесс запуска (около 5 часов), в ходе работы которого можно только сидеть со скрещенными пальцами и надеятся, что в этот раз заветные слова OutOfMemoryException не появятся в консоли удалённого сервера.
Не буду описывать всех ухищрений, которые пришлось проделать, чтобы восстановить остановленный сервер в течении трёх дней, но одним своим мини открытием поделюсь — boolean — это не тот тип данных, который Вы хотите использовать в высоконагруженных системах. Внимание вопрос:
Как Вы думаете, сколько памяти занимает boolean например на Ubuntu server x64?

Самый дорогой javascript код

Reading time1 min
Views2.9K
Не так давно, Opera Software испытала острую нужду в новых серверах. Не просто несколько серверов, мы планировали развитие Opera Mini, Opera Link да и My Opera так же росли очень быстро. Мы предвидели сумасшедшие нагрузки на сервера и мы были правы.

Было ясно, что нам предстояло сделать не малые инвестиции в мощности серверов(покупая вот такие штучки)

Выписали чек на кругленькую сумму. Я уверен сис.админы тогда писали кипятком от щастья. Слюнки потекли и у людей с крупных hardware компаний. Они тут же появились в нашем офисе в Осло с «пробниками» — тестовыми серверами.

Не смотря на это, один из крупнейших мировых поставщиков железа, с именем которого знаком каждый читатель, чьи аппаратные ресурсы, в большинстве случаев, мы используем прямо сейчас – не выполнили свое домашнее задание. Когда сис.админы Opera загрузили сервер для тестов web-based админки, то они нашли одно условие, которое вывело из себя всех, включая CTO.

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

if (is.opera)
{
  window.location.href="config/error.htm";
}


* This source code was highlighted with Source Code Highlighter.

Глубокая трассировка в Internet Explorer

Reading time3 min
Views3.1K
image
После прочтения поста Стива Сойдерса о бесплатном инструменте — dynaTrace Ajax, я был дико заинтригован. Он предлагает полную анализ трассировки в IE6-8, включая JavaScript, прорисовку и сетевой трафик. Я протестировал несколько сайтов, но более интересный результат получил с тяжелым JavaScript'ом в Gmail в IE8.
Читать дальше →

Information

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