Pull to refresh

Comments 9

UFO just landed and posted this here
Если это троллинг — то спасибо Вам за Ваш комментарий, я это очень ценю.

Если Вы серьезно — то Вы, вероятно, читали текст по диагонали, и она у Вас закончилась ровно на конце абзаца «Третья попытка». Дочитывайте, пожалуйста, до конца весь пост, перед тем, как оставлять комментарии. «Черный ящик», во-первых, был один, и во-вторых, это был промежуточный этап (о чем Вам подскажет хотя бы тот факт, что после заголовка «вторая попытка» есть заголовок о третьей, и хотя тот самый ящик упоминается в третьей — относится он именно ко второй. Немного запутанно, согласен, но если вчитаться — то все становится на свои места). Было бы очень глупо с моей стороны выкладывать статью о том, что я нашел черный ящик и теперь его использую, вот, посмотрите. Вы не находите?

На случай, если это действительно не троллинг, и для тех, кому интересны подробности
На случай, если это действительно не троллинг (в чем лично я очень сомневаюсь), и из статьи действительно не понятно — я поясню (текст поста показалась мне и так слишком длинным, поэтому я не стал добавлять туда все это, когда писал, так как сути это не особенно касается):

1. Разбор почты — не такая большая и важная часть моего приложения, и уделять ей времени больше, чем было запланированно, мне не хотелось. Я посчитал это довольно тривиальной задачей (в С/C++ с этим отлично справляется даже curl, по сути вообще для этого не предназначенный), поэтому для меня оказалось полной неожиданностью отсутствие асинхронных решений под scala/java, работающих с почтой.
2. Для того, чтобы проверить, работает TLS или нет — существуют тесты (очень полезная штука, кстати, весьма Вам рекомендую). А TDD — вообще рулит, большинство внезапностей (по типу «мож он там все без шифрования гонит») прорабатывается еще на этапе разработки. Так вот, все тесты прошли нормально (для них я создал простенькую блокирующию (т.е. не асинхронную) реализацию сервера на Java, да и на gmail протестировал на всякий случай). А на то, чтобы разбираться, как именно работает класс SslTlsSupport (а не TLS, как Вы прокомментировали) — в планы не входило, отложил это напотом. «Потом» наступило раньше, чем ожидалось.
3. При наличии исходников, конечно, ничего не сложно найти. Если точно знать, где и что искать. Вот только в Akka я ничего подобного не нашел (по описанным в статье причинам). А Spray — библиотека немаленькая, при первом приближении найти нужный подраздел мне не удалось (в ней, помимо всего прочего, 3 уровня — для работы на уровне хоста, соединения и запроса). Да и вообще, если бы все программисты сразу не задумываясь кидались искать ответы на вопросы в исходники — то человечество вряд ли изобрело такую полезную штуку, как документация, а разработка программного обеспечения была бы весьмааааа затяжным процессом, особенно для тех, что только что пришел в технологию.
4. Статья не о том, «как соединять черные ящики изолентой», а о заявленных, но не документированных возможностях Akka/Spray на стыке двух технологий, одна из которых так и не увидела свет в полноценном релизе, хотя вовсю применяется внутри как akka так и spray, а вторая пока еще является сырым концептом на очень ранней стадии воплощения.
Забыл упомянуть еще вот о чем: удачный пример мне попался в исходниках spray-can, но ведь нигде не сказано, что искать его нужно именно там, а не где-то, скажем, в spray-client или spray-http.
UFO just landed and posted this here
Видимо, до «просветления» вы тоже читали весьма бегло. Выражусь Вашими же словами: меня удручает ваше невнимательное чтение статьи вкупе с устойчивым желанием делалть выводы и утверждения в комментариях, основываясь на своих фантазиях, а не на реальном тексте статьи.
Дочитайте до конца, уверяю, там будет хеппи-енд и срыв покровов. Суть именно в том, что «ссылок на почитать» в природе не существует. Есть только исходники, и даже они без комментариев и пояснений. Или вопрос «где почитать исходники» в статье я тоже не раскрыл?

Насчет нетривиальной в рамках libc задачи — кто же спорит. Но проект на Scala, не на C. И проект немаленький, чтобы брать и переписывать на C только из-за этого. А тут затык на такой тривиальности. Об этом, собственно, и статья. О том, какие трудности я испытал при переходе, какие подходы попробовал, обо что копья поломал. И еще (но это уже в конце, в развязке, в тех лишних абзацах, которые, видимо, нужно удалить, Вы их все равно не читаете, я понял) о том, как именно я вышел из этой ситуации, и что именно послужило ключем решения всех проблем. Для Вас, это, конечно, может быть и не результат, для Вас главный результат — пробежавшись вскользь по статье, не разобравшись в сути, тут же настрочить коммент о том, что автор не разобрался в сути. Это гениально, я считаю. Мне, как новому хабра-юзеру, теперь есть с чего брать пример.

А если для Вас единственной в статье была интрига об упавшем «боевом» классе — то это может означать только то, что я хреновый писатель. Ну и с какой радости мне копаться и выискивать суть проблемы в блокирующем Java API (при том, что проект на Scala+Akka+реактивный неблокирующий подход), и тем более делать это основной интригой моей статьи — для меня загадка. Если Вам это так интересно — напишите свою статью, с сутью и решениями. А моя — не об этом.

В любом случае, спасибо Вам за первый комментарий. Я очень люблю общение, и мне было приятно с Вами подискутировать, и приятно, что хоть кто-то прокомментировал мою писанину. Я тут еще одну статью пишу, не премините заглянуть, если что. Мне очень важно лично Ваше мнение.
Респект за материал, мало таких вещей по Scala.
И отдельно уважуха за переход от C++ к Scala. Сам в свое время с С на C# с трудом перелазил.
Вопрос: сколько заняло в итоге решение задачи включая рытье по исходникам?
Спасибо за теплые слова, это вдохновляет :) Сейчас готовлю урок по Akka.FSM, тоже на Scala, сегодня буду публиковать. По поводу срока — если бы Вы не спросили — я бы сейчас пребывал в заблуждении, что мне хватило пары-тройки дней. Но я посмотрел логи git, и вижу, что у меня ушло на это в общем итоге дней 10. Но не стандартных рабочих, а моих фрилансерских. В последнее время это в большинстве случаев по 14-16 часов за компом, с небольшими перерывами. А задача, действительно, тривиальная, и изначально я запланировал под нее навскидку 1 день.
Большое спасибо, порадовали.
Sign up to leave a comment.

Articles