Как стать автором
Обновить
4
0
Alex Zaytsev @alexanderzaytsev

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

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

Устранение дублирования Where Expressions в приложении

Время на прочтение4 мин
Количество просмотров21K
Допустим, у вас есть товары и категории. В какой-то момент клиент сообщает, что для категорий с рейтингом > 50 необходимо использовать другие бизнес-процессы. У вас достаточно опыта и вы понимаете, что где сегодня 50 завтра будет 127.37 и хотите избежать появления магических чисел в коде, поэтому делаете так:

    public class Category : HasIdBase<int>
    {
        public static readonly Expression<Func<Category, bool>> NiceRating = x => x.Rating > 50;

       //...
    }

    var niceCategories = db.Query<Category>.Where(Category.NiceRating);

К сожалению, этот номер не пройдет, если вы хотите выбрать продукты из соответствующих категорий, потому что NiceRating имеет тип Expression<Func<Category, bool>>, а в случае с Product нам потребуется Expression<Func<Product, bool>>. То есть, необходимо осуществить преобразование Expression<Func<Category, bool>> => Expression<Func<Product, bool>>.

    public class Product: HasIdBase<int>
    {
        public virtual Category Category { get; set; }

       //...
    }

    var niceProductsCompilationError = db.Query<Product>.Where(Category.NiceRating); // так нельзя!

К счастью, осуществить это довольно просто!
Код под катом
Всего голосов 22: ↑18 и ↓4+14
Комментарии82

Большая Перекачка, или Вперед к кайнозою

Время на прочтение5 мин
Количество просмотров43K
80 млн. лет назад, на рубеже мезозоя и кайнозоя, Земля находилась с одном из благоприятнейших своих состояний — широты Сибири и Аляски входили в субтропическую зону, арктические острова и Антарктида были покрыты лесами. Все что нужно, чтобы вернуться к этому состоянию — восстановить кайнозойский водообмен полярного бассейна с экваториальными морями.

Для реализации своего плана автор (инженер Петр Борисов) в 1960-х годах предложил построить поперек Берингова пролива плотину.

Читать дальше →
Всего голосов 65: ↑65 и ↓0+65
Комментарии271

Программисты на C — самый большой разделённый народ в мире?

Время на прочтение1 мин
Количество просмотров64K
Сегодня, 26 апреля 2016 г., арбитражный суд Орловской области должен был решить вопрос, является ли язык программирования C иностранным языком.

Столь необычным вопросом суд озаботился из-за Федеральной антимонопольной службы (ФАС), которая возбудилась вот на это объявление, размещённое напротив местного политеха:

image
Читать дальше →
Всего голосов 146: ↑138 и ↓8+130
Комментарии354

45-летняя женщина утверждает, что прошла первую в мире генную терапию против старения

Время на прочтение2 мин
Количество просмотров62K
image
Теломеры отмечены зелёным цветом

Элизабет Пэрриш [Elizabeth Parrish], жительница Сиэтла, 45-и лет, директор стартапа со специализацией на биотехнологиях BioViva утверждает, что успешно прошла курс генной терапии против старения. Терапия была направлена на борьбу с двумя известными и явными эффектами, связанными со старением: укорачиванием теломер и потерей мышечной массы.

Предварительно успех терапии подтвердили в техасской медицинской лаборатории SpectraCell. В сентябре 2015 года в лаборатории кровь Пэрриш была взята на анализ непосредственно перед началом терапии. Тогда медики назвали показатель длины теломер у лейкоцитов предпринимателя необычно низким – 6,71 кб (тысяч базовых пар). При этом в среднем у младенцев эта длина составляет порядка 8 кб, у взрослых может доходить до 3 кб, а у пожилых – до 1,5 кб.
Читать дальше →
Всего голосов 43: ↑41 и ↓2+39
Комментарии170

Почему некоторым людям везёт намного больше, чем другим?

Время на прочтение7 мин
Количество просмотров28K
image

Известный киноактёр и телеведущий Джеймс Скотт Бамгарнер, более известный под псевдонимом Джеймс Гарнер, недавно ушёл из жизни в возрасте 86 лет. Многие люди считают, что он был великим человеком, и любят рассказывать истории про его жизнь. Как парень, не имеющий никакого актерского опыта и не любящий выступать перед публикой, смог заставить влиятельного голливудского агента заняться его карьерой? Повезло?
Читать дальше →
Всего голосов 17: ↑14 и ↓3+11
Комментарии9

Как я ошибся при написании хеш-таблицы и какие выводы из этого сделал

Время на прочтение23 мин
Количество просмотров25K
Для ясности теоретического понимания нет лучшего пути, чем учиться на своих собственных ошибках, на собственном горьком опыте. (Фридрих Энгельс)

Всем привет!


Несколько недель назад мне в линкедине написал коллега и сообщил, что в моем проекте на гитхабе не совсем верно работает хеш-таблица.


Мне прислали тесты и фикс, и действительно создавалась ситуация, где система "зависала". При расследовании проблемы я понял, что допустил несколько ошибок при верификации. На Хабре тема верификации RTL-кода не слишком подробна расписана, поэтому я и решил написать статью.


Из статьи вы узнаете:


  • как можно организовать хеш-таблицу на FPGA.
  • на чём была построена верификация.
  • какие ошибки я допустил (они привели к тому, что бага не была замечена раньше).
  • как это всё можно исправить.

Добро пожаловать под кат!

Читать дальше →
Всего голосов 39: ↑37 и ↓2+35
Комментарии9

Что писать в карточках, если товары одинаковые?

Время на прочтение5 мин
Количество просмотров20K


Привет! Я продолжаю рассказывать про буквы в блоге Михаила, владельца Текстброкера.

Предположим, у вас есть интернет-магазин, а у него внутри – карточки товаров. И товары бывают двух тяжелых категорий:
  • Те, у которых дофига неуникального текста (например, теххарактеристики телефонов, инструкции медицинских препаратов), и непонятно, как быть с SEO.
  • Те, которые имеют артикулы ####0001, ####0002, ####0003… ####0050 и так далее, то есть отличаются какими-то совершенно нереальными мелочами вроде цвета. Пример – 180 моделей очаровательных трусиков. К сожалению, очаровательны они для райтера только первые десять раз.

Давайте посмотрим, что делать.
Читать дальше →
Всего голосов 14: ↑14 и ↓0+14
Комментарии16

Расшифровка обновлений одного популярного сотового модема: метод Дмитрия Склярова

Время на прочтение7 мин
Количество просмотров20K


Иногда хочется заглянуть в код прошивки какого-нибудь устройства. Но кроме самой прошивки, которая зашифрована, ничего нет. И как реверсеру с этим жить? В статье рассмотрена реальная ситуация, когда при помощи базовых знаний в computer science и логики удалось решить почти бесперспективную задачу.

Название производителя модема убрано, и некоторые имена файлов специально изменены, так как хочется заострить внимание на самой задаче — и на интересном подходе к ее решению. Кстати, в последних моделях модемов этого производителя такой метод уже не работает. Но не исключено, что он может быть использован и в других случаях.
Читать дальше →
Всего голосов 47: ↑46 и ↓1+45
Комментарии14

Взломать PayPal за 73 секунды

Время на прочтение3 мин
Количество просмотров77K
image

В декабре 2015 года я обнаружил критически опасную уязвимость в одном из сайтов PayPal для бизнеса, которая позволяла мне выполнять произвольные команды на веб-серверах внутри корпоративной сети. При отправке веб-формы на сайте manager.paypal.com в одном из скрытых параметров передавались закодированные данные в виде сериализованного объекта Java. Данный параметр можно было подделать, изменив название класса и значения его свойств, что и привело к выполнению произвольного кода на серверах. Я немедленно сообщил об этой проблеме в PayPal, и она была быстро исправлена.
Читать дальше →
Всего голосов 67: ↑64 и ↓3+61
Комментарии30

История одной IT-компании, которая так и не пришла к успеху (Ч.3)

Время на прочтение18 мин
Количество просмотров20K

Пролонгация


Денежная инфекция поражает воображение. © Павел Шарпп

2013 год. Пришло время оценить результаты работы за прошлый год. Сделано много — похвалиться нечем.
CEO прочитав какую-то из очередных «умных» книг (а может и посетив семинар) понял в чем у нас загвоздка. Появились понятия о капитализации, экзитах, опционах, акциях, бюджетах, прогнозах, гипотезах и об инвестиционных раундах.


Читать дальше →
Всего голосов 13: ↑13 и ↓0+13
Комментарии7

Chrome Cleanup Tool: программа для очистки Chrome от мусора

Время на прочтение1 мин
Количество просмотров52K


Компания Google выпустила очень полезную программу Chrome Cleanup Tool (под Windows) — инструмент очистки Chrome. Программа чиcтит браузер и удаляет ненужных «паразитов», malware и подозрительный сторонний софт, такой как Mail.ru Sputnik/Guard (полный список под катом), из-за которого браузер тормозит и зависает.
Читать дальше →
Всего голосов 26: ↑15 и ↓11+4
Комментарии15

Два $ в час

Время на прочтение2 мин
Количество просмотров49K
В этой статье нет ни одной ссылки (с) Х. Т. Меэль

Один мой знакомый, асоциальный тип, жено- и С++ ненавистник, увлекся разработкой игр под iOS. Уже лет 7 занимается этим опьяняющим делом. Раз в год он присылает мне отчеты о доходах, и позволяет поделиться ими с уважаемым сообществом.

Сразу скажу — в 2015 году и первом месяце 2016 года практически ничего не изменилось.
Схема заработка примитивна. Это —

  1. Доход от платных $1 приложений;
  2. Доход от бесплатных приложений, в которых размещены баннеры от Google (adMob реклама);
  3. Доход от бесплатных приложений, в которых размещены полноэкранные заставки от Chartboost;
  4. **Новинка** Доход от бесплатных приложений, в которых используется реклама от медиатора Appodeal.

Подробности на картинках с цифрами.
Читать дальше →
Всего голосов 39: ↑34 и ↓5+29
Комментарии55

Почему биткоин провалился: окончание эксперимента с биткоинами

Время на прочтение14 мин
Количество просмотров97K
Я провел более пяти лет в роли разработчика системы биткоин. Миллионы пользователей и сотни разработчиков использовали мои программы, а мои лекции привели к созданию нескольких стартапов. Я рассказывал про биткоин на Sky TV и BBC News. Меня цитировали в Economist в качестве эксперта по биткоинам и известного разработчика. Я объяснял эту тему для SEC, банкирам и обычным людям в кафе.

И с самого начала я утверждал, что биткоин – это эксперимент, и как любой эксперимент, он может провалиться. Не инвестируйте то, что вы не готовы потерять. Я говорил об этом в интервью, на докладах и писал в почте. Как делали и другие известные разработчики – Гевин Андресен и Джефф Гарзик.

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

Почему биткоин провалился? Потому, что провалилось сообщество. То, что должно было стать новым, децентрализованным видом денег, не использующих «важные системные учреждения», и было «слишком большим, чтобы провалиться», стало чем-то более ужасным – а именно, системой, контролируемой небольшой группкой людей. Более того, сеть близка к техническому коллапсу. Механизмы, которые должны были предотвратить этот коллапс, сломались, и в результате нет смысла мечтать, что биткоин может стать лучше существующей финансовой системы.

Подумайте об этом. Если бы вы никогда не слышали про биткоин раньше, понравилась ли бы вам сеть платежей, которая:

  • не может передавать существующие у вас средства
  • имеет непредсказуемые комиссии за переводы, которые быстро растут
  • позволяет покупателям отменять платежи после выхода из магазина простым нажатием кнопки (если вы не в курсе этой «возможности» – это потому, что биткоин её только что ввела)
  • страдает невыполненными и нестабильными платежами
  • контролируется Китаем
  • в которой компании и люди, участвующие в её развитии, находятся в фазе гражданской войны


Рискну предположить, что ответ будет «нет».
Читать дальше →
Всего голосов 74: ↑64 и ↓10+54
Комментарии77

Определение пола по ФИО – когда точность действительно важна

Время на прочтение7 мин
Количество просмотров43K
Некоторое время назад меня заинтересовала задача определения пола человека по его ФИО. В тот момент я работал в области медицинского страхования, где эта проблема была действительно актуальна – расходы на одного застрахованного, а значит и тарифы, по которым людей принимали на страхование, в зависимости от пола клиента, могли отличаться в несколько раз. Большая часть договоров – корпоративные, застрахованные являются сотрудниками работодателя.

Мы никогда не видели большинство из них в глаза, все, что мы имели – списки застрахованных, где пол иногда был указан (с большим количеством ошибок), но чаще – не указан вообще. Большинство компаний имеют свою специфику работы и профессиональные традиции, в силу чего, в их коллективах преобладают люди одного пола. Даже небольшая ошибка могла сделать потенциально прибыльный договор убыточным (или наоборот, но на такое, по странному стечению обстоятельств, случалось с нашими клиентами гораздо реже). В целом, при объеме портфеля договоров в несколько миллиардов, и характерном количестве ошибок около процента, цена корректного определения пола по ФИО была в районе нескольких десятков миллионов.
Читать дальше →
Всего голосов 38: ↑32 и ↓6+26
Комментарии57

Восход разработчикономики

Время на прочтение10 мин
Количество просмотров61K
От переводчика
Почитывая несколько лет назад журнал "Форбс", я наткнулся на статью, которую нашёл крайне интересной. Ну, знаете как бывает — читаешь, читаешь, и на каждом абзаце воскликаешь: «О! Це ж про меня!». Не мог поверить, что я один такой, и никто не сподобится уж если не перевести, то хотя бы сослаться на неё в русскоязычной прессе. Однако за четыре года этого так и не произошло. Ну что ж, «хочешь сделать что-то правильно — сделай это сам», посему предоставляю вниманию почтенной публики первую половину статьи. (Стараюсь переводить художественно, поэтому работа двигается небыстро; размер оригинала — больше 30 килобайт, и, «земную жизнь пройдя до половины», я понял, что держаться нету больше сил.)

P.S. Так и не смог разобраться, как поставить в заголовке тег «перевод».

Восход разработчикономики


Статья Венкатеша Рао опубликована в декабре 2011 года в журнале «Форбс».

В эволюционной биологии существует теория, согласно которой взаимный альтруизм и сотрудничество возникли как решение проблемы хранения еды. Если вам, раннему гоминиду, посчастливилось завалить крупного мамонта, у вас не было ни малейшего шанса умять его целиком до того, как он протухнет. Тогда вы делились едой: лучшим вложением для избыточного капитала было вложение в желудок вашего приятеля. В этом случае вы могли потребовать возврата вклада в тот раз, когда мамонта завалит уже этот самый приятель.
Читать дальше →
Всего голосов 37: ↑31 и ↓6+25
Комментарии76

«Roslyn — еще очень сырая технология» — интервью с Сергеем Шкредовым, руководителем .NET-направления в JetBrains

Время на прочтение24 мин
Количество просмотров30K
Привет, это снова Без слайдов. Я Алексей Федоров, и на этот раз в гостях у меня побывал Сергей Шкредов, руководитель всего .NET-направления в компании JetBrains.



С Сергеем мы говорили:
  • о последних релизах ReSharer;
  • о новой схеме подписок и лицензий;
  • про непростые отношения с Microsoft;
  • о рантайме и развитии языка;
  • о том, как поменял ситуацию выход Roslyn;
  • о работе с фидбеком пользователей для улучшения продукта;
  • о планах развития других продуктов .NET стека;
  • о важности внутриотраслевого общения и обмена опытом;
  • про разработку продуктов для С++;
  • немного о ReSharper C++, на который должны подсесть даже разработчики Microsoft;
  • О том, как пользователи почувствуют изменения;
  • Как ReSharper будет развиваться дальше.


Вот видео



Под катом — текстовый вариант интервью.

Читать интервью...
Всего голосов 55: ↑51 и ↓4+47
Комментарии69

«ВКонтакте» не только не платит пользователям за найденные уязвимости, но и не рассматривает их

Время на прочтение4 мин
Количество просмотров90K
По моему скромному мнению, баги из разряда банальных SQL инъекций в GET параметрах и выполнение команд через пайп уходят в далёкое прошлое. Различные фреймворки разрабатывающиеся десятками и сотнями людей, автоматизированное тестирование и лучшие практики программирования практически не оставляют шансов на то, что в начале двухтысячных являлось обыденностью. На мой взгляд, текущее время это пора гонок условий, логических багов, мисконфигураций и конечно же XSS. Которые приводят к различным серьёзным последствиям.

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

Подробности
Всего голосов 118: ↑108 и ↓10+98
Комментарии69

Я хочу, чтобы сайты открывались мгновенно

Время на прочтение10 мин
Количество просмотров139K
Здравствуйте, меня зовут Александр Зеленин и я веб-разработчик. Я расскажу, как сделать так, чтобы ваш сайт открывался быстро. Очень быстро.


Я хочу, чтобы мой сайт открывался быстро
Всего голосов 130: ↑122 и ↓8+114
Комментарии87

Почему я перепроверяю записанные данные, или История одного расследования

Время на прочтение3 мин
Количество просмотров37K
Недавняя хабрастатья о различиях в побайтово идентичных файлах вызвала из глубин памяти (и почтового ящика) небольшой кусочек моей переписки с одним из инженеров, отвечавших в то время за линию дисков MPG в компании Fujitsu. Для удобства англонеговорящих читателей, привожу перевод с английского под катом.

Читать дальше →
Всего голосов 53: ↑52 и ↓1+51
Комментарии74

Как я искал (и нашел) разницу в двух побайтово идентичных файлах

Время на прочтение4 мин
Количество просмотров71K
Есть у нас одно .NET-приложение, которое умеет загружать и использовать плагины. Плагины — дело хорошее. Можно функционал расширять, можно оперативненько обновлять их со своего сайта, можно даже юзерам дать SDK и позволить писать свои плагины. Мы всё это и делали. Наши плагины представляли собой обычные .NET-сборки, которые нужно было подкинуть в определённую папку, откуда основное приложения их загружало и использовало. Ну, вы, наверное представляете как — Assembly.Load(), дальше ищем класс, реализующий необходимый интерфейс, создаём объект этого класса и т.д. Всё это работало давно, стабильно и ничто не предвещало беды. Но вдруг в какой-то момент появилась необходимость создать плагин, состоящий из нескольких файлов. В связи с этим было решено считать плагином не просто .NET-сборку (1 файл), а zip-архив, в котором может быть как одна сборка, так и несколько файлов. В связи с этим пришлось научить билд-сервер паковать плагины в архивы, а основное приложение — разархивировать их в нужное место. В общем-то задача на 10 строк кода. Ничто не предвещало беды. И вот скачиваю я с билд-сервера собранный архив с плагином, разархивирую его в нужную папку, запускаю приложение, и… не работает! Стоп, как не работает? Это ведь тот же плагин!

Дальше — больше. Прошу проделать ту же самую процедуру моего коллегу, на его компьютере. Он пробует — и у него всё работает! Но как же так? Одна версия приложения, один и тот же файл с билд-сервера. Какая-то разница в окружении? Сажусь за компьютер коллеги, пробую ещё раз — не работает! Он в этом время пробует на моём — работает! То есть получается, что файл «помнит», кто его разархивировал! Зовём третьего коллегу понаблюдать этот цирк. Последовательно, на одном и том же компьютере, по очереди делаем одни и те же действия: скачиваем архив с плагином, разархивируем в нужную папку, запускаем приложение. Когда это делаю я — программа не видит плагин, когда это делает коллега — всё работает. На третьем круге этих интересных экспериментов вдруг замечаем разницу в действиях: я разархивировал плагин стандартными средствами Windows, а мой коллега — с помощью 7-Zip. И то и другое вызывалось нами из контекстного меню архива, так что разницу в клик по не тому пункту вначале никто не замечал. Ну ок. Получается, файл, извлечённый из zip-архива с помощью 7-zip, отличается от того же файла из того же архива, извлечённого с помощью стандартного архиватора Windows?

Кстати, пока вы не открыли статью под катом, ответьте-ка сами для себя на вопрос, может ли такое быть, что содержимое файлов валидного zip-архива при разархивации 7-zip и через проводник Windows будет разным?
Читать дальше →
Всего голосов 189: ↑176 и ↓13+163
Комментарии88
1
23 ...

Информация

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