Search
Write a publication
Pull to refresh
-2
1.8

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

Send message

Карринг vs Частичное применение функции

Reading time7 min
Views22K

Перевод статьи Джона Скита, известного гуру языка C#, автора книги C# In Depth, сотрудника Google, человека #1 по репутации на stackoverflow.com и наконец героя Jon Skeet Facts. В этой статье Джон доступно объясняет, что представляют из себя карринг и частичное применение функции, концепции, пришедшие из мира функционального программирования. Кроме того, он подробно поясняет в чём их различие. Признаюсь, что я и сам их путал до прочтения этой статьи, поэтому мне показалось полезным сделать перевод.


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

  • Те, кто не интересуются функциональным программированием и находят функции высшего порядка запутанными: вы можете пропустить эту статью полностью.
  • Те, кто знают всё о функциональном программировании и хорошо понимают разницу между каррингом (currying) и частичным применением функции (partial function application): пожалуйста, внимательно прочтите этот пост и отпишитесь в комментариях, если найдете неточности.
  • Те, кто частично знаком с функциональным программированием, и заинтересован узнать больше: отнеситесь к этому посту скептически и внимательно прочтите комментарии. Прочитайте другие статьи более опытных разработчиков для получения дополнительной информации.

В общем-то, я знаю, что некоторые люди иногда путают термины карринг и частичное применение функции — используют их взаимозаменяемо, когда этого делать не следует. Это одна из тех тем (как, например, монады), которую я до некоторой степени понимаю, и я решил, что лучшим способом удостовериться в своих знаниях будет написать об этом. Если это сделает эту тему более доступной для других разработчиков, тем лучше.
Читать дальше →

Имитируем пересечение, исключение и вычитание, с помощью опережающих проверок, в регулярных выражениях в ECMAScript

Reading time2 min
Views33K

От переводчика


Это перевод небольшой заметки, написанной вчера Lea Verou, в ней предлагается интересная, хотя и не новая техника для решения повседневных задач.

Информация в статье касается ECMAScript, но может использоваться и в других RegExp Движках (хотя и есть вероятность, что там есть более подходящее решение).

Если примеры кажутся вам сложными, рекомендую играть с ними в консоли, по мере прочтения. И Заранее прощу прочтение за пугающее название.

Статья


Если вы какое-то время используете регулярные выражения, то наверняка вы сталкивались с разными вариантами следующих задач:

  • Пересечение:«Что-то, что совпадает с шаблоном А и шаблоном Б»
    Например: Пароль, минимум 6 символов, в котором хотя бы одна цифра, хотя бы одна буква, и хотя бы один специальный символ

  • Исключение: «Я хочу что-то, что совпадает с шаблоном А, но не совпадает с шаблоном Б»
    Например: Любое целое число, которое не делится на 50

  • Отрицание: Все. Что не совпадает с шаблоном А
    Например: Строка, которая не содержит в себе слово «Foo»


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

Обновлённый мини-компьютер FXI Cotton Candy поступит в продажу этим летом

Reading time1 min
Views9.6K


На Хабре уже упоминался мини-компьютер FXI Cotton Candy, который со времён первого февральского показа аудитории на Mobile World Congress получил целый ряд усовершенствований и новых свойств. Норвежская компания FXI уже принимает предзаказы на Cotton Candy на цене 199$, обещая выпустить устройство к концу текущего месяца, тогда как релиз во всём мире ожидается «к концу лета».

Фактически мини-компьютер FXI СС представляет из себя компактное (размер можно оценить на фото, 7.5 см) устройство, в качестве аппаратных характеристик которого компания-производитель называет:

  • 2-ядерный ARM-процессор (Cortex-A9) с частотой 1,2 ГГц
  • 4-ядерную графику ARM Mali-400MP
  • 1 Гб DRAM
  • HDMI (до 1080p), USB 2.0, microUSB
  • карты MicroSD до 64 Гб
  • Wi-Fi, Bluetooth


В качестве операционных систем Cotton Candy поддерживает Android 4.0 и Ubuntu (после приобретения устройство надо будет зарегистрировать на сайте и выбрать какую систему установить). Мало того, также имеются встроенные клиенты виртуализации для Windows, Linux и MacOS.

Под катом больше фото Cotton Candy.

Посмотреть

Перехват сессий в беспроводных сетях

Reading time1 min
Views61K
На хабре уже была статья о Перехвате аккаунтов пользователей в Wi-Fi-сетях с Android используя утилитку DroidSheep (небольшой русский howto для ленивых).

Используя эту программу, я столкнулся с вопросом: как бы мне сохранить перехваченные сессии? DroidSheep позволяет отправлять на почту перехваченные сессии. Но это очень неудобно для меня. Я бы хотел сохранять сессии в привычном для меня pcap формате для дальнейшего анализа на стационарном компьютере через WireShark (или через его аналог на андроиде SharkReader ).

Фактически, задачу можно переформулировать: нам нужен arp-spoofing с возможностью логирования всех перехваченных пакетов в формат pcap. Предлагаемый вариант не претендует на оптимизированный в каком-либо виде. Но вполне работоспособен.

Мой вариант под катом

Взломать Wi-Fi за 10 часов

Reading time12 min
Views1.5M
Еще не так давно казалось, что беспроводная сеть, защищенная с помощью технологии WPA2, вполне безопасна. Подобрать простой ключ для подключения действительно возможно. Но если установить по-настоящему длинный ключ, то сбрутить его не помогут ни радужные таблицы, ни даже ускорения за счет GPU. Но, как оказалось, подключиться к беспроводной сети можно и без этого — воспользовавшись недавно найденной уязвимостью в протоколе WPS.


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

Продолжение истории про разработку русского аналога Siri

Reading time4 min
Views3.4K
После публикации топика «Разработка русскоговорящего «аналога» Siri за 7 дней» я получил много ценных советов и предложений о помощи. Большое всем спасибо. Я учел многие советы и замечания и продолжил разработку. Что из того получилось под катом.
Читать дальше →

Разработка русскоязычного аналога «Siri»: эпилог

Reading time5 min
Views4.2K
Или история, как небольшой эксперимент Just for fun перерос в полноценное приложение с неплохим результатом.
Начало истории тут, продолжение тут.
Если коротко, то с четвертого раза apple одобрил приложение, основательно покромсав функционал и дизайн. Подробности про прохождение ревью, и первые результаты под катом.
Читать дальше →

Разработка русскоговорящего «аналога» Siri за 7 дней

Reading time6 min
Views18K
После выхода iPhone 4S с Siri «на борту», владельцы остальных гаджетов Apple, чувствовали себя немного обделенными. Даже в свой новый iPad Apple не включила Siri. Разработчиками по всему миру были предприняты попытки портировать Siri на другие устройства или написать похожие аналоги. И только русскоязычный App Store хранил молчание. Наверно все разработчики очень заняты, подумал я, и решил исправить это досадное недоразумение…
Читать дальше →

Узнаем параметр Generic-класса в Java

Reading time9 min
Views114K
Если вы не очень часто программируете на Java, то этот топик скорее всего будет для вас бесполезен. Не читайте его :)

Недавно понадобилось решить следующую задачу: определить класс, которым параметризован generic-класс.

Если кто-то сталкивался с подобной задачей, то наверное также сразу попробовал написать что-то вроде этого:
public class AbstractEntityFactory<E extends Entity> {
  public Class getEntityClass() {
    return E.class;
  }
}

Увы, IDE либо компилятор сразу укажут вам на ошибку («cannot select from a type variable» в стандартном компиляторе): " E.class" — не является допустимой конструкцией. Дело в том, что в общем случае во время исполнения программы информации о реальных параметрах нашего generic-класса может уже и не быть. Поэтому такая конструкция в Java не может работать.
Читать дальше →

История создания fermer.mobi

Reading time3 min
Views3.5K
Хочу рассказать вам, как я создал браузерную онлайн игру для мобильных устройств, которая на текущий момент:
— занимает 3-е место в рейтинге waplog.net (это самый крупный счетчик рувапа);
— 4-е место в мобильных одноклассниках (m.odnoklassniki.ru);
— аудитория игры ~300 тысяч хостов в сутки;
— онлайн днем ~12 тысяч;
— количество регистраций уже приближается к 500 тысячам.

Эта история, на мой взгляд, интересна тем, что:
— игру создал, запустил и раскрутил я один, без инвесторов, без партнеров;
— я никогда не был менеджером, бизнесменом, маркетологом, я программист;
— помимо денег на содержание моей семьи я вложил в раскрутку всего 50 тысяч рублей.

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

Отчет ФБР о криптовалюте Биткойн

Reading time4 min
Views13K


Федеральное бюро расследований США обеспокоено потенциалом отмывания денег и другой криминальной деятельности в анонимной платежной системе Биткойн. Таковы выводы, которые можно сделать, ознакомившись с появившимся на этой неделе в сети документом под названием «Виртуальная валюта Биткойн: уникальные особенности представляют отдельные затруднения сдерживания незаконной деятельности» (Bitcoin Virtual Currency: Unique Features Present Distinct Challenges for Deterring Illicit Activity).

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

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

Ваше приложение на JavaFX во Вконтакте

Reading time2 min
Views16K
На JavaDay в Питере мне задали вопрос: «Пригоден ли JavaFX для написания браузилок — небольших браузерных игр?» Мой ответ: «Да, конечно пригоден», — очевидно, нуждается в подтверждении. Этому и посвящена данная публикация.

В JavaFX 2.1 есть необходимые для такого рода приложений богатые возможности в области графики, анимации, поддержки медиа-контента. Для их использования не нужно изучать новый язык программирования, достаточно знания Java. API сравнительно небольшой. Разобраться в основных концепциях помогут слайды с моей презентации. Для всего остального есть Java community и множество доступных для языка Java библиотек.

Далее речь пойдет о развертывании приложения и добавлении его в социальную сеть ВКонтакте.
Читать дальше →

Google Chrome хакеру не помощник

Reading time3 min
Views18K
О том, как Chrome мешает мне искать XSS-уязвимости.


Почему я ищу уязвимости?


Как и многие из вас, я делаю Code Review и первое, что ищу это конечно уязвимости. Когда уязвимость найдена в коде, хорошо бы проверить есть ли она на самом деле через браузер, потому что бывают «ложные тревоги». Это те случаи, когда данные уже приходят фильтрованными и XSS невозможен. Всегда полезно иметь возможность показать разработчику атаку в действии, потому что это хороший аргумент и помогает быстрее перейти к конструктивному решению проблемы, если есть сомнения, что уязвимость таки существует. Но проверку в браузере я делаю не часто — либо проблема очевидна прямо из кода, либо верят на слово. В общем искать уязвимости — это интересно.

Начало этой истории


Друг скинул ссылки на сайт, который ещё год назад имел XSS-уязвимость, о чем я писал владельцам ресурса. Стало интересно проверить снова. Проверил — XSS есть, но вот простейшего подтверждения выполнения JS я получить не смог!..



Я не ломаю сайты и не занимаюсь аудитом безопасности, поэтому возможно то, что я выяснил давно известно для специалистов, но для меня это было открытием.

Первые подозрения


Итак, стал проверять всевозможные варианты внедрения кода — но без результата. По ходу дела выяснил что и как фильтруется, какие есть проверки и прочее, но alert(1); упорно не выполнялся. По ходу дела нашелся ещё и XSRF — приятный бонус!
Далее я расскажу как я потреля кучу времени, но выяснил одну важную особенность браузера Chrome.

CS Source кратко о создании чита All in One

Reading time16 min
Views40K
Добрый день.

Решил поделиться, с Вами, своим небольшим опытом создании чита для Counter-Strike Source v34. Данное приложение было написано исключительно ради спортивного интереса(служит, исключительно, для ознакомления), так как в годы своей юности (изрядно убил времени за этой игрой :() всегда интересовало как же устроены эти программы, хотя теоретически знал как они работают. И вот спустя пол десятка лет (в 2010 году), после игры с коллегами в канун одного из праздников я опять вспомнил о своем давнем *интересе*…

Думаю с прелюдиями стоит закончить, скучно это, переходим к практике.
Будет много кода.
Полных исходников выкладывать не буду, а отдам только абстрактные куски кода, но это рабочие фрагменты.
Для раззадоривания скажу, что в данном чите реализована функция, позволяющая стрелять в любое место и убивать противников которые могут находиться где угодно, главное, чтобы был прострел (можно бежать и убивать всех за спиной), ее я назвал AssShot — для настоящих читеров, не привыкших скрываться (что наглядно продемонстрировано в видео). VAC его не обнаруживает, но это пока кто-то не выложит его в свободный доступ.
Читать дальше →

Что у нас «Лучшего» на сегодня?

Reading time3 min
Views967
К вопросу о том, нужно ли вводить коэффициенты тематики статей, чтобы Хабр более соответствовал той идее, с которой он приобрёл популярность.

Сегодня, вечером пятницы (после которой будет ещё один рабочий день, поэтому не совсем пятница, но всё же) имеем такую картину популярности статей на Хабре, с комментариями по типу статей:
Лучшее за 24 часа (17:00 MSK)


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

Раскрытие IP-адреса пользователя Skype

Reading time1 min
Views88K


Деанонимизация скайп-пользователя по его skypename через нахождение его реального IP-адреса

1. Качаем отсюда пропатченный скайп версии 5.5:
http://skype-open-source.blogspot.com/2012/03/skype55-deobfuscated-released.html

2. Включаем создание файла с дешифрованным debug логом. Для этого добавляем нескольких ключей в реестр.
https://github.com/skypeopensource/skypeopensource/wiki/skype-3.x-4.x-5.x-enable-logging

3. Выбираем функцию добавить скайп контакт, но не добавляем, а только кликаем на него, чтобы посмотреть vcard. Этого будет достаточно.
Читать дальше →

Как правильно сортировать контент на основе оценок пользователей

Reading time5 min
Views93K


В оригинале название звучит как «How Not To Sort By Average Rating». Я подумал, что дословный перевод «Как не сортировать по усреднённому рейтингу» будет малопонятен и хуже отражает содержание статьи.

Постановка проблемы


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

Неправильное решение №1

Рейтинг= (Число положительных оценок) - (Число отрицательных оценок)

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

Как Булгаков помогает изучать расстановку запятых – сайт для повышения грамотности

Reading time4 min
Views23K
Большинство из нас проходили русский язык. Но, так как это происходило в переходном возрасте, мы проходили его мимо. Кто-то в это время работал, кто-то занимал первые места на спортивных соревнованиях, кто-то играл на приставках, а большинство вкладывали всё своё доступное время в общение с компьютером.
Социальная сеть Ковчег. Автор Вецель Евгений
Именно поэтому мы не всегда грамотно пишем, показывая себя не с лучшей стороны. Несмотря на то, что я умею программировать, мне с трудом удаётся понять алгоритм расстановки запятых (такое ощущение, что эти правила специально запутали).

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

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

Что скрывает от нас директория .git

Reading time4 min
Views26K
Вот и мне посчастливилось познакомиться с git. Каюсь, пользуясь Subversion, я знал, как в IDEA или TortoiseSVN сделать то, что мне надо, но даже не представлял, что происходит за сценой. В данном случае я решил подойти к git более ответственно и хорошенько изучить его перед использованием. Сейчас я знаю какие команды надо использовать для выполнения задуманного, но не знаю, как это сделать в IDEA или TortoiseSVN.
Но я решил пойти еще дальше и узнать, что происходит в самой директории .git. Там оказалось все настолько интересно и просто, что я решил поделиться этим с вами.
Читать дальше →

Распознаём изображение с токена при помощи камеры

Reading time3 min
Views34K
В организации, где я тружусь в свободное от отдыха время, очень высокие требования к безопасности. Везде, где только можно, для аутентификации пользователей используются токены. Мне выдали вот такую вот штуку:

и сказали: жмёшь кнопку, смотришь цифры, вводишь пароль и радуешься. «Безопасность, конечно, превыше всего, но и о комфорте забывать не следует» — примерно так подумал я и провёл ревизию имеющегося у меня электронного хлама.
Читать дальше →

Information

Rating
2,019-th
Registered
Activity