Продолжаю краткий обзор особенностей Objective-C, удивляющих Java программистов (первая часть). Во второй части немного будет рассказано о философии языка, о поддержке пространств имен и о типе id. Судя по комментариям к первой части, необходимо немного пофилософствовать, поэтому обещанные свойства (property) переносятся в третью часть. Также узнаем какие вопросы задают в американских супермаркетах.
Смирнов Сергей @smirnov_sergey
разработчик
Восстанавливаем загруженные локально письма в почтовом ящике на сервере. IMAP
2 мин
34KДобрый день.
Хабрапользователь ValdikSS в статье «Восстанавливаем удаленную почту на mail.ru (и других)» поделился вариантом восстановления на сервере почты уже полученной клиентом. Хочу поделиться другим способом восстановления не зависящим от формата базы клиента.
К сожалению, применимость этого способа в большей степени зависит от протоколов передачи почты, которые поддерживают сервера и клиенты, а именно IMAP4.
Некоторые популярные почтовые клиенты с поддержкой IMAP:
О поддержке IMAP конкретным почтовым сервером можно узнать из соответствующих инструкций по настройке почтовых программ. Ниже перечислены некоторые популярные сервисы и ссылки на страницы помощи:
И не смотря на то, что требуемый протокол существует с 1994, его поддержка некоторыми игроками данной области воспринимается как не обязательная опция. Примером этому может служить сервис mail.ru, который отказался от IMAP некоторое время назад.
Итак. Если вы настроив почтовый клиент через pop3 и забыв поставить галочку «хранить почту на сервере» решили восстановить письма на сервере или хотите пополнить почтовый ящик любыми другими письмами из имеющихся в вашем почтовом клиенте аккаунтов, то welcome под Хабракат.
Хабрапользователь ValdikSS в статье «Восстанавливаем удаленную почту на mail.ru (и других)» поделился вариантом восстановления на сервере почты уже полученной клиентом. Хочу поделиться другим способом восстановления не зависящим от формата базы клиента.
В каких случаях этот способ сработает
К сожалению, применимость этого способа в большей степени зависит от протоколов передачи почты, которые поддерживают сервера и клиенты, а именно IMAP4.
Некоторые популярные почтовые клиенты с поддержкой IMAP:
- Mozilla Thunderbird
- The Bat!
- Outlook Express
- Microsoft Outlook
О поддержке IMAP конкретным почтовым сервером можно узнать из соответствующих инструкций по настройке почтовых программ. Ниже перечислены некоторые популярные сервисы и ссылки на страницы помощи:
И не смотря на то, что требуемый протокол существует с 1994, его поддержка некоторыми игроками данной области воспринимается как не обязательная опция. Примером этому может служить сервис mail.ru, который отказался от IMAP некоторое время назад.
Итак. Если вы настроив почтовый клиент через pop3 и забыв поставить галочку «хранить почту на сервере» решили восстановить письма на сервере или хотите пополнить почтовый ящик любыми другими письмами из имеющихся в вашем почтовом клиенте аккаунтов, то welcome под Хабракат.
+3
Кластеризация точек на основе регулярной сети
4 мин
16K![](https://habrastorage.org/storage2/8d6/ad0/bce/8d6ad0bce286361f71247d74bff20cb3.jpeg)
В данной статье я рассмотрю два алгоритма, первый — непосредственно кластеризация, второй — построение контура кластера в виде выпуклого многоугольника, прикладная задача для улучшеного восприятия полученного результата.
+32
Сети для самых маленьких. Часть вторая. Коммутация
18 мин
765KТуториал
Все выпуски
8. Сети для самых маленьких. Часть восьмая. BGP и IP SLA
7. Сети для самых маленьких. Часть седьмая. VPN
6. Сети для самых маленьких. Часть шестая. Динамическая маршрутизация
5. Сети для самых маленьких: Часть пятая. NAT и ACL
4. Сети для самых маленьких: Часть четвёртая. STP
3. Сети для самых маленьких: Часть третья. Статическая маршрутизация
2. Сети для самых маленьких. Часть вторая. Коммутация
1. Сети для самых маленьких. Часть первая. Подключение к оборудованию cisco
0. Сети для самых маленьких. Часть нулевая. Планирование
7. Сети для самых маленьких. Часть седьмая. VPN
6. Сети для самых маленьких. Часть шестая. Динамическая маршрутизация
5. Сети для самых маленьких: Часть пятая. NAT и ACL
4. Сети для самых маленьких: Часть четвёртая. STP
3. Сети для самых маленьких: Часть третья. Статическая маршрутизация
2. Сети для самых маленьких. Часть вторая. Коммутация
1. Сети для самых маленьких. Часть первая. Подключение к оборудованию cisco
0. Сети для самых маленьких. Часть нулевая. Планирование
После скучного рассказа о подключении к кошкам переходим к настройке сети. В этот раз темы будут для новичков сложные, для старичков избитые. Впрочем сетевым аксакалам едва ли удастся почерпнуть что-то новое из этого цикла. Итак, сегодня:
а) аккуратно впитываем теорию о коммутаторах, уровнях сетевой модели, понятии инкапсуляции и заголовков (не пугайтесь — еще не время),
б) собираем спланированную в нулевой части цикла сеть,
в) настраиваем VLAN'ы, разбираемся с access и trunk-портами и тегированными Ethernet-фреймами,
г) соотносим текущие знания со стеком протоколов TCP/IP и моделью OSI (да, наконец-то мы ее коснёмся).
Перед тем, как вы обратитесь к практике, настоятельно рекомендуем почитать нулевую часть, где мы всё спланировали и запротоколировали.
+84
Построение «правильного» процесса разработки на платформе Mono
20 мин
13K![](https://habrastorage.org/storage2/f0d/608/95b/f0d60895bfc172e83b8b18964dc2bff5.jpeg)
Представленный пример может быть интересен широкой аудитории, т.к. легко может быть адаптирован для разработки под любую другую платформу.
+15
Обновление информации в фоне
2 мин
12KВсем добрый день.
Недавно я задумался надо вопросом фонового обновления информации и мне пришла в голову одна идея.
Суть задачи — мы находимся на странице списка новостей. Необходимо обновлять список по мере поступления новых новостей. Серверный язык PHP
Недавно я задумался надо вопросом фонового обновления информации и мне пришла в голову одна идея.
Суть задачи — мы находимся на странице списка новостей. Необходимо обновлять список по мере поступления новых новостей. Серверный язык PHP
+33
Simplify.js — JavaScript-библиотека для упрощения ломаных линий
2 мин
10KРад представить вашему вниманию еще одну крохотную, но полезную open-source-утилиту своего авторства — Simplify.js.
![](https://habrastorage.org/getpro/habr/post_images/93f/45b/38f/93f45b38f296aaccca4224fb541c89da.png)
Simplify.js — очень быстрая реализация упрощения ломаных линий на JavaScript. Изначально написав ее для Leaflet (библиотеки для интерактивных карт), после небольшого эксперимента по оптимизации захотелось выпустить ее в качестве отдельной библиотеки без зависимостей, которую можно использовать как в браузере, так и на серверных платформах, таких, как Node.js, и применять и для 2D, и для 3D-точек.
Подобное упрощение позволяет на несколько порядков уменьшить количество точек в ломаной линии (например, представляющей длинный маршрут на карте или график), при этом максимально сохранив ее очертания (с заданной точностью). Соответственно резко уменьшается занимаемый линией размер памяти и время, требуемое для ее обработки.
![](https://habrastorage.org/getpro/habr/post_images/93f/45b/38f/93f45b38f296aaccca4224fb541c89da.png)
Simplify.js — очень быстрая реализация упрощения ломаных линий на JavaScript. Изначально написав ее для Leaflet (библиотеки для интерактивных карт), после небольшого эксперимента по оптимизации захотелось выпустить ее в качестве отдельной библиотеки без зависимостей, которую можно использовать как в браузере, так и на серверных платформах, таких, как Node.js, и применять и для 2D, и для 3D-точек.
Подобное упрощение позволяет на несколько порядков уменьшить количество точек в ломаной линии (например, представляющей длинный маршрут на карте или график), при этом максимально сохранив ее очертания (с заданной точностью). Соответственно резко уменьшается занимаемый линией размер памяти и время, требуемое для ее обработки.
+124
Еще раз о поиске наибольшего сгущения в облаке точек
4 мин
7.4KВ очередной раз мне попалась задача – найти в облаке точек место их наибольшего сгущения. На этот раз ситуация была такой:
- есть некоторое количество (можно считать, что не более 16 миллионов) измерений набора параметров. Число параметров в наборе – от 2 до 5.
- измерение параметров может быть относительно успешным – тогда их результат будет неподалеку от истинного (параметры и тип распределения неизвестны), либо не успешным – тогда результат будет случайным (опять-таки с неизвестными параметрами распределения). Определить по одиночному измерению, было ли оно успешным, нельзя.
- Можно считать, что точка сгущения существует. Если их несколько с близким качеством (которое формально так и не определяется), можно выдать любую.
- ответ нужно дать за один проход по исходным данным: перевычислять их или сохранять целиком – дорого.
- И, как обычно, хочется, чтобы алгоритм выглядел попроще, а работал побыстрее.
+33
Красивые кнопки для Twitter Bootstrap
1 мин
12KКлассное расширение для фреймворка Twitter Bootstrap v2.0 — CSS-генератор кнопок. С помощью ползунков выбираете цвет, насыщенность, яркость и выпуклость кнопки.
![](https://habrastorage.org/storage2/bc4/51e/d5f/bc451ed5f05f2c9690246dd5857caf56.png)
Потом забираете CSS-код из соседнего окошка. И больше никогда не кодируйте цвет кнопок вручную!
P.S. Ещё один генератор кнопок: Button Maker, ну и вдобавок: CSS генератор градиентов.
![](https://habrastorage.org/storage2/bc4/51e/d5f/bc451ed5f05f2c9690246dd5857caf56.png)
Потом забираете CSS-код из соседнего окошка. И больше никогда не кодируйте цвет кнопок вручную!
P.S. Ещё один генератор кнопок: Button Maker, ну и вдобавок: CSS генератор градиентов.
+40
Батники против эксплойтов
11 мин
59KДоброго времени суток, многоуважаемый %USERNAME%. Меня зовут Голованов Сергей, и я всё еще являюсь ведущим вирусным аналитиком в «Лаборатории Касперского». Я понимаю, что название этого поста в корпоративном блоге компании может вызвать смех, грусть, а у некоторых даже эпилептический припадок, но дайте мне всё объяснить.
Я понимаю, что для всех батники выглядят как нечто очень простое и со времен AUTOEXEC.BAT уже практически забытое, в то же время эксплойты, если вы конечно не профессиональный исследователь уязвимостей, выглядят очень сложно и практически неправдоподобно, особенно для некоторых разработчиков. Но! В данном посте я постараюсь перевернуть эти представления и рассказать, что всё как будто наоборот. Батники чуть легче и сильнее по функционалу brainfuck'а, а эксплойты не страшнее сортировки пузырьком на basic'е.
![image](https://habrastorage.org/getpro/habr/post_images/49c/174/f76/49c174f76233477c45e382e6cffd570c.jpg)
(Осторожно! 3 МБ иллюстрированного потока сознания и куча скриптов)
Я понимаю, что для всех батники выглядят как нечто очень простое и со времен AUTOEXEC.BAT уже практически забытое, в то же время эксплойты, если вы конечно не профессиональный исследователь уязвимостей, выглядят очень сложно и практически неправдоподобно, особенно для некоторых разработчиков. Но! В данном посте я постараюсь перевернуть эти представления и рассказать, что всё как будто наоборот. Батники чуть легче и сильнее по функционалу brainfuck'а, а эксплойты не страшнее сортировки пузырьком на basic'е.
![image](https://habrastorage.org/getpro/habr/post_images/49c/174/f76/49c174f76233477c45e382e6cffd570c.jpg)
(Осторожно! 3 МБ иллюстрированного потока сознания и куча скриптов)
+108
50 советов для разработки безупречного дизайна iOS приложения
12 мин
58KПривожу перевод статьи Ника Карсона. В статье собраны вместе, как мне кажется, основные правила построения интерфейса для iOS приложений.
1. Возможно, сенсорное управление отличается гибкостью и интуитивностью, но оно далеко не совершенно. Подумайте, чем люди занимаются, когда используют ваше приложение, и как они держат устройство. Помните, что пальцы покрывают гораздо большую площадь, чем кажется, и их точность оставляет желать лучшего.
2. Ориентируйтесь на устройство при создании приложений: учтите не только размер экрана, но и где и когда устройство используется. Больше всего iPad используется для развлечений между 8-11 часами вечера, перед сном, тогда как iPhone — в очереди на автобус или в кофейне. Учтите различные сценарии использования при разработке приложений – включая и то, как далеко устройство расположено от лица пользователя.
3. Рассматривайте ваше приложение поэкранно. Определите, каковы основные задачи, которые достигаются при использовании данного активного экрана, и затем сделайте так, чтобы пользователь мог решить их, используя минимальное количество дополнительных опций, кнопок и других элементов управления. Избегайте слишком большой функциональной нагрузки на активный экран, в особенности на мобильных устройствах.
4. Разработка программ для мобильных телефонов или планшетов значительно отличается от разработки веб-приложений и даже приложений для стандартного рабочего стола, — каждый элемент занимает на экране определенное место, и это правило необходимо неукоснительно соблюдать. Рассматривайте это скорее как преимущество, чем ограничение: фиксированные шаблоны помогут лучше контролировать размер и расположение каждого элемента, видимого пользователю.
5. При адаптации приложения к экранам различных размеров, помните, что при значительном его изменении – например, от iPhone к iPad – способ использования устройства также изменится. Если размеры ограничены, используйте основные функции приложения, при их увеличении – можно включить любые дополнительные функции, которые не вошли в более сжатую версию, так как у вас появляется возможность обыграть дополнительное пространство.
За остальными 45-ю — добро пожаловать подкат.
1. Возможно, сенсорное управление отличается гибкостью и интуитивностью, но оно далеко не совершенно. Подумайте, чем люди занимаются, когда используют ваше приложение, и как они держат устройство. Помните, что пальцы покрывают гораздо большую площадь, чем кажется, и их точность оставляет желать лучшего.
2. Ориентируйтесь на устройство при создании приложений: учтите не только размер экрана, но и где и когда устройство используется. Больше всего iPad используется для развлечений между 8-11 часами вечера, перед сном, тогда как iPhone — в очереди на автобус или в кофейне. Учтите различные сценарии использования при разработке приложений – включая и то, как далеко устройство расположено от лица пользователя.
3. Рассматривайте ваше приложение поэкранно. Определите, каковы основные задачи, которые достигаются при использовании данного активного экрана, и затем сделайте так, чтобы пользователь мог решить их, используя минимальное количество дополнительных опций, кнопок и других элементов управления. Избегайте слишком большой функциональной нагрузки на активный экран, в особенности на мобильных устройствах.
4. Разработка программ для мобильных телефонов или планшетов значительно отличается от разработки веб-приложений и даже приложений для стандартного рабочего стола, — каждый элемент занимает на экране определенное место, и это правило необходимо неукоснительно соблюдать. Рассматривайте это скорее как преимущество, чем ограничение: фиксированные шаблоны помогут лучше контролировать размер и расположение каждого элемента, видимого пользователю.
5. При адаптации приложения к экранам различных размеров, помните, что при значительном его изменении – например, от iPhone к iPad – способ использования устройства также изменится. Если размеры ограничены, используйте основные функции приложения, при их увеличении – можно включить любые дополнительные функции, которые не вошли в более сжатую версию, так как у вас появляется возможность обыграть дополнительное пространство.
За остальными 45-ю — добро пожаловать подкат.
+50
В поисках изофот
5 мин
3.1KПонадобилось мне однажды вычисление изофот (линий равной интенсивности на изображениях), однако, готовых библиотек я не нашел, а копаться в чужом коде (например, в тех же Octave или Iraf) очень не хотелось. В качестве простейшего алгоритма я нашел метод шагающих квадратов. Однако, этот метод сильно снижает пространственное разрешение при вычислении узлов изофот, поэтому я решил его немного видоизменить и сделать квадраты перекрывающимися.
Первая реализация (кстати, довольно быстрая) была неудачной: т.к. я строил маску, общую для всех уровней, а для конкретного уровня пересчитывал отдельно, в точках, через которые проходит несколько изолиний, получились разрывы. Ковыряния в коде приводили к все большему и большему числу взаимных блокировок и флагов, поэтому я решил пойти в ущерб производительности и вычислять маски отдельно для каждого уровня интенсивности.
Первая реализация (кстати, довольно быстрая) была неудачной: т.к. я строил маску, общую для всех уровней, а для конкретного уровня пересчитывал отдельно, в точках, через которые проходит несколько изолиний, получились разрывы. Ковыряния в коде приводили к все большему и большему числу взаимных блокировок и флагов, поэтому я решил пойти в ущерб производительности и вычислять маски отдельно для каждого уровня интенсивности.
+25
Авторы Cloud9 IDE представили сборник документации по Node.js
1 мин
1.3KКомпания-создатель облачной IDE Cloud 9 на конференции NodeSummit, посвященной Node.js, планирует представить ряд новых улучшений в своем продукте, попутно представив сообществу англоязычный сборник документации по Node.js, который доступен по адресу nodemanual.org.
Весь сборник разделен на две части — Basic и Tutorials; при этом как таковых «HowTo» для новичков нет, поэтому можно сказать, что целевой аудиторией сайта являются все же профессионалы в Node.js. Авторами большинства статей называются разработчики Mozilla и Joyent, а примеры, представленные в документации, можно запустить в Cloud9, имея в ней аккаунт. GitHub сборника можно найти здесь.
Также Дениэлс намерен представить и блог nodebits.org, направленный на "… поддержание духа Node.js и инновационности". Сейчас блог не отличается большим числом статей (первая датируется только 30 декабря), но его обещают пополнять, называя среди авторов ведущих разработчиков Node.js-сообщества Тима Касвелла, Берта Белдера и Бена Нурдхаиса (Tim Caswell, Bert Belder, Ben Noordhuis).
[NodeManual]
Весь сборник разделен на две части — Basic и Tutorials; при этом как таковых «HowTo» для новичков нет, поэтому можно сказать, что целевой аудиторией сайта являются все же профессионалы в Node.js. Авторами большинства статей называются разработчики Mozilla и Joyent, а примеры, представленные в документации, можно запустить в Cloud9, имея в ней аккаунт. GitHub сборника можно найти здесь.
Также Дениэлс намерен представить и блог nodebits.org, направленный на "… поддержание духа Node.js и инновационности". Сейчас блог не отличается большим числом статей (первая датируется только 30 декабря), но его обещают пополнять, называя среди авторов ведущих разработчиков Node.js-сообщества Тима Касвелла, Берта Белдера и Бена Нурдхаиса (Tim Caswell, Bert Belder, Ben Noordhuis).
[NodeManual]
+16
Паттерны ООП в метафорах
17 мин
562K![](https://habrastorage.org/storage2/e54/929/b5c/e54929b5c86dfd0285412c81922cfb59.jpg)
Статья предназначена исключительно для новичков, так что «старожилы» ничего нового для себя не узнают. В основном статья описывает известные паттерны из книги «Приемы объектно-ориентированного программирования. Шаблоны проектирования.», но более популярным и простым языком.
+188
Торрент лекций Лекториум
1 мин
35K![image](https://habrastorage.org/storage2/119/d34/e1a/119d34e1a0f00d332e70f230b677934a.jpg)
В связи с неддавней темой Лекториум записал почти тысячу лекций за год сайт Лекториума уже несколько дней не покидает хабраэффект.
Дабы облегчить дальнейшее скачивание лекций выкладываю некоторые из ник как торренты.
+129
Детектирование эллиптических частиц на микрофотографии. Новый алгоритм поиска эллипсов на изображении
4 мин
13KЯ всё продолжаю возиться со своими микрофотографиями. Наука не стоит на месте (с момента той статьи прошел без двух месяцев год!), и теперь нам нужно распознавать другие объекты:
Но тут уже безо всяких послаблений: точность должна быть достаточно высокой.
Конкретно эта задачка встала недавно (примерно в конце ноября), и решалась в свободное от учёбы и работы время.
Achtung! Статья получилась довольно крупная, много картинок. Зато без избыточной математики.
Сформулируем задачу: получить параметры, полностью характеризующие контур фигуры, изображенной на картинке.
![](https://habrastorage.org/storage2/a97/683/113/a9768311339640197b3c66afcc8502fb.jpg)
Но тут уже безо всяких послаблений: точность должна быть достаточно высокой.
Конкретно эта задачка встала недавно (примерно в конце ноября), и решалась в свободное от учёбы и работы время.
Achtung! Статья получилась довольно крупная, много картинок. Зато без избыточной математики.
Сформулируем задачу: получить параметры, полностью характеризующие контур фигуры, изображенной на картинке.
+29
XNA Draw: пишем отложенное освещение на три источника с помощью шейдера
7 мин
18KТуториал
Привет хабравчанам!
Давненько я не писал на хабр: учеба, сессия надвигается, сами понимаете. Сегодня я попробую рассказать, как в XNA реализовать Deferred Lighting (отложенное освещение) с использованием normal mapping на три источника света, при этом использовать мы будем Reach-профиль и Shader model 2.0.
Напомню, раньше мы уже затрагивали тему шейдеров: тут. Остальное под катом, видео и демо там же.
![](https://habrastorage.org/storage1/57af6d56/8abbe765/8132ea57/a3b3541b.png)
Напомню, раньше мы уже затрагивали тему шейдеров: тут. Остальное под катом, видео и демо там же.
+58
Информация
- В рейтинге
- Не участвует
- Откуда
- Кострома, Костромская обл., Россия
- Дата рождения
- Зарегистрирован
- Активность