Pull to refresh
67
0.1
Ivan Grishaev @igrishaev

Clojure/Lisp

Send message

Тестировала Notion, попросила написать мне про отпуск в Сочи. Как по мне, так хороших копирайтеров нейросеть точно не заменит. Вот что вышло:

Отпуск в Сочи: положительные впечатления

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

Одной из главных достопримечательностей Сочи являются его пляжи, простирающиеся на многие километры. Каждый пляж имеет свои особенности, вы можете выбрать пляж с большим количеством развлечений и кафе, или предпочесть более уединенное место, где можно насладиться спокойным отдыхом на природе. Кроме того, в Сочи есть множество парков и садов, где можно насладиться природой и понаблюдать за местными животными. Наконец, в Сочи расположено множество культурных достопримечательностей, таких как парки и музеи. Они позволят вам познакомиться с историей и культурой этого удивительного города.

Один из главных достопримечательностей Сочи - это его пляжи. Береговая линия простирается на многие километры, и каждый пляж имеет свои особенности. Вы можете выбрать пляж с большим количеством развлечений и кафе, или предпочесть более уединенное место, где можно насладиться спокойным отдыхом на природе.

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

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

В целом, Отпуск в Сочи - это уникальный и незабываемый опыт, который оставляет только положительные впечатления. Мы рекомендуем посетить этот город и насладиться его красотами и гостеприимством.

Я рад, что вам теперь проще разрабатывать одну мобильную версию, но мне эта версия зачем нужна, если я читаю хабр только с ПК и никак иначе? Мне не нужно ничего из того, что вы притащите в новую версию из мира мобильного софта. Не нужны горизонтальные скроллы, не нужны прятки с контентом, не нужен весь этот геморрой в заднице. У меня монитор 1920x1080 и интернет 100 мегабит. Я хочу использовать свой экран на 100% и свой интернет на 100%. Мне не нужны ваши уши в пол-экрана. Не нужно прятание картинок и описания статей. Всё это натуральное вредительство. Меня вообще не интересует, как сложно вам разрабатывать сайт. Мне интересно только то, насколько удобно его читать. Читать на десктопе мобильную версию никогда не было удобно и не будет.
Опишите в статье что такое операция «rem». Мне понять что такое «rem» практически невозможно.

7 rem 3.
1

Что сие значит? Остаток от деления с каким-то хитрым округлением вниз?

Далее она используется вроде как для определения четности, но так же не описана математика, остается только догадываться.
>> Под катом много картинок (и ни одной формулы).
Отличная демонстрация уровня познаний рядового читателя хабры.

А по теме — были советские ролики, которые описывали ТО наглядней. Например, «Физика в половине десятого» или «что такое теория относительности». Можно на ютюбе найти.
Дополнение по тому как делать релизную версию, годную для выкладывания на Android Market:
1) Генерируем приватный ключ, который будет использоваться для подписи вашего APK файла:
keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000 (keytool — стандартная утилита из состава JDK, например она лежит тут: c:\Program Files\Java\jdk1.5.0\bin\)
заполняем ответы на вопросы (пароль, имя, организация, страна и тд)
В результате получаем в текущей дирректории файл: my-release-key.keystore

2) получаем «отпечаток» с ключа:
keytool -list -alias alias_name -keystore my-release-key.keystore -storepass password -keypass password

Результат:
Certificate fingerprint (MD5): 2B:72:AB:05:EE:98:C5:4C:12:9F:04:F3:DB:25:FE:A2

3) генерируем Android Maps API key:
Идем на Sign Up for the Android Maps API страницу и вставляем в поле внизу полученный ранее «отпечаток» 2B:72:AB:05:EE:98:C5:4C:12:9F:04:F3:DB:25:FE:A2

Результат — наш релизный ключ для карт «0Pt9RihjZq7zjNeNXafCD0ll2FPS_TPffQS90zA»
который используем в наших лейаутах:
<com.google.android.maps.MapView
                 android:layout_width="fill_parent"
                 android:layout_height="fill_parent"
                 android:apiKey="0Pt9RihjZq7zjNeNXafCD0ll2FPS_TPffQS90zA"
                 />

Генерация подписанного APK:
Правый клик на проекте в Eclipse: Android Tools > Export Signed Application Package, указываем путь к нашему my-release-key.keystore и вводим пароль
Источники:
Signing Your Applications
Obtaining a Maps API Key
Android Maps API Key Signup
для выбирающих и думающих оставлю здесь
(почти)все китайцы за эту цену в ~200$ сейчас имеют одинаковые характеристики: mtk6577, 1GB/4GB, dual sim (one IMEI), 8Mpx, 0.3..1.3Mpx, ускоритьель PowerSGX. Часто горилла (иногда нет, напр THL W3). Поэтому выбирайте по внешнему виду, блестючести корпуса и размеру/разрешению экрана. Кому-то скруглённый Newman N1(сравните-ка дизайн с GNexus 4), кому-то квадратный аппарат из топика. Аппараты годные, приятные (несколько штук пользовал).
Далее по софту:
Cyanogenmod для этой платформы НЕ СУЩЕСТВУЕТ на сегодня. Прошивки есть, в основном с мелкими отличиями от стоковой. Перед покупкой курите форумы на предмет их наличия для выбраной модели.
Внимание: не редко в стоковой прошивке установлен троян (/system/app/smsreg.apk) перед вставлением симочек удалить к ебеням собачим безжалостно. Автор, проверте пжлста и скажите, а был ли мальчик.
Ну и на последок маленький хак: заказывайте допопцию root (+$3 к цене). Это будет означать, что ваш аппарат как минимум включат и попользуют, значит аппарат вам отправится рабочий. К тому же в рутованом телефоне проще удалить троян.
Хм, как-то давно в журнале «Хакер» в рубрике «творчество» был фантастический рассказ про парнишку, который модифицировал прошивку своего кардиостимулятора. Теперь это перестает казаться фантастикой…

Upd: www.nixp.ru/niro/single_attempt
Ремастер от Марка, для вас. Листайте вниз.
Работаю с Liberty API и могу сказать, что обработку платёжки на бирже явно писали идиоты.
Это вообще касается работы с любой платёжной системой — намалюют абы как (или поставят стандартный скрипт-пример от самой платёжки) и потом удивляются.
Для того, что бы такого не происходило, желательно по возможности заюзать следующие советы (некоторые системы не поддерживают определённый функционал, либо наоборот имеют дополнительные средства — в любом случае стоит их использовать по максимуму):
  1. Использовать HTTPS
  2. Устанавливать ссылку на обработчик нотификаций в настройках мерчанта и никогда не ставить его в виде параметра в форме (не для всех платёжек такое возможно, но их слава богу мало).
  3. Не держать обработчик нотификаций на том же домене и с очевидным адресом. Сделайте пару неговорящих ни о чем поддоменов и используйте один из них, либо зарегистрировать вообще отдельный домен под это дело. Путь к скрипту обработки не должен угадываться на раз, все попытки неправильных запросов отфутболивать как 404.
  4. Внимательно проверять статусы транзакций, соотвествие валют, соотвествие суммы записаной в транзакции и той, что пришла в нотификации.
  5. Обязательно вести лог действий над транзакцией, любые несоотвествия нещадно и подробно логировать. Потом спасибо сами себе скажите.
  6. Ограничить доступ по IP, что-бы доступ имел только сервер платёжной системы. Но нужно учитывать, что иногда IP меняются, так что нужно обязательно нотифицировать себя при несовпадении и подробно логировать то, что пришло, что бы обработать транзакции в ручную если нужно (и хотя обычно платёжки повторяют запрос через некоторое время, надеятся на это не стоит).
  7. У большинства платёжек можно задавать свои кастомные поля — используйте их. Впихните туда 1-2 хеша посложнее (только не MD5, а что-нить типа SHA256 или покруче) с параметрами, о которых знает только ваша система и они нигде публично не фигурируют, да и алгоритм составления этого хеша узнают только если вас капитально сломают и утянут код — эти хеши очень сильно повышают надёжность транзакций, т.к. если хоть один параметр не совпадёт — хеш валидацию не пройдёт.
  8. Статусы транзакций должны быть реализованы таким способом, что бы если нотификация пришла и была успешно обработана и получила финальный статус success/failed — то сменить скажем failed на success уже нельзя было бы через нотификацию, если кто-то всё же сумеет подделать запрос. Само собой нужно учитывать особенности самой системы — бывают и chargeback, и всякие pending и тому подобное. Так же бывает что failed реально может смениться на success — в таких случаях саппорт должен быть нотифицирован и транзакция должна проверяться в ручную.
  9. В некоторых платёжках доступен API для работы с историей операция — юзайте! Это весьма надёжный способ проверить, а был ли мальчик
Да всё стандартно:
— рассылка коммерческих предложений.
— через знакомых, кому уже что-то делали.
м.б. ещё что-то… так сходу не вспомню. Специально менеджеров для поиска не брали, пока своими силами справляемся.
<сарказм уровень="88%">

Ну да, как же можно не восхищаться языком, на котором возможна программа типа такой?

#!/usr/bin/perl -w
use strict;

                                           $_='ev
                                       al("seek\040D
           ATA,0,                  0;");foreach(1..3)
       {<DATA>;}my               @camel1hump;my$camel;
  my$Camel  ;while(             <DATA>){$_=sprintf("%-6
9s",$_);my@dromedary           1=split(//);if(defined($
_=<DATA>)){@camel1hum        p=split(//);}while(@dromeda
 ry1){my$camel1hump=0      ;my$CAMEL=3;if(defined($_=shif
        t(@dromedary1    ))&&/\S/){$camel1hump+=1<<$CAMEL;}
       $CAMEL--;if(d   efined($_=shift(@dromedary1))&&/\S/){
      $camel1hump+=1  <<$CAMEL;}$CAMEL--;if(defined($_=shift(
     @camel1hump))&&/\S/){$camel1hump+=1<<$CAMEL;}$CAMEL--;if(
     defined($_=shift(@camel1hump))&&/\S/){$camel1hump+=1<<$CAME
     L;;}$camel.=(split(//,"\040..m`{/J\047\134}L^7FX"))[$camel1h
      ump];}$camel.="\n";}@camel1hump=split(/\n/,$camel);foreach(@
      camel1hump){chomp;$Camel=$_;y/LJF7\173\175`\047/\061\062\063\
      064\065\066\067\070/;y/12345678/JL7F\175\173\047`/;$_=reverse;
       print"$_\040$Camel\n";}foreach(@camel1hump){chomp;$Camel=$_;y
        /LJF7\173\175`\047/12345678/;y/12345678/JL7F\175\173\0 47`/;
         $_=reverse;print"\040$_$Camel\n";}';;s/\s*//g;;eval;   eval
           ("seek\040DATA,0,0;");undef$/;$_=<DATA>;s/\s*//g;(   );;s
             ;^.*_;;;map{eval"print\"$_\"";}/.{4}/g; __DATA__   \124
               \1   50\145\040\165\163\145\040\157\1 46\040\1  41\0
                    40\143\141  \155\145\1 54\040\1   51\155\  141
                    \147\145\0  40\151\156 \040\141    \163\16 3\
                     157\143\   151\141\16  4\151\1     57\156
                     \040\167  \151\164\1   50\040\      120\1
                     45\162\   154\040\15    1\163\      040\14
                     1\040\1   64\162\1      41\144       \145\
                     155\14    1\162\       153\04        0\157
                      \146\     040\11     7\047\         122\1
                      45\15      1\154\1  54\171          \040
                      \046\         012\101\16            3\16
                      3\15           7\143\15             1\14
                      1\16            4\145\163           \054
                     \040            \111\156\14         3\056
                    \040\         125\163\145\14         4\040\
                    167\1        51\164\1  50\0         40\160\
                  145\162                              \155\151
                \163\163                                \151\1
              57\156\056

Она к тому же в цвете на Хабрахабре выглядит ещё круче, чем в чёрно-белом исходнике на http://www.cpan.org/misc/japh.

</сарказм>
«Переписка — пожалуйста. Мгновенные сообщения, переданные пользователем, будут сохраняться на протяжении 30 дней, если другой срок не будет истребован представителями госорганов.»
====
бог с ними — пускай слушают. Я ничего криминального не пишу и не собираюсь писать.
Любители приватности юзают превосходный OTR (который существует для большинства IM-клинетов, в скайпе его можно юзать через миранду т.е. подключить скайп в миранду, и писать сообщения через мирандовское окошко с включенным OTR-плагином).
Мне вот больше интересно: раз могут хранить 30 дней, то, мать вашу, ПОЧЕМУ вы до сих пор не сделали оффлайн-messaging? в том виде, в котором он есть, он работает откровенно дерьмово, можно сказать, его нет!
Храните хоть год всю переписку, но сделайте ПОЛНОЦЕННЫЙ offline-messaging!!!
UFO landed and left these words here
Когда у меня возникла задача отправить факсом заполненную формочку, я немного встал в ступор. Факс аппарата не было, факс-модем потерял и не имел информации о каких либо факс сервисах. После гугления решил попробовать вот это — www.myfax.com/free/ — через пару дней мой аккаунт успешно активировали.
Использую Corona SDK, очень доволен. Скорость и лёгкость написания игр просто потрясают. API конечно не всеобъемлющее, но вполне достаточное. Есть дружелюбный IRC канал #corona на фриноде. Я там постоянно бываю.

Заинтересован cocos2d-x с недавней поддержкой Lua, после завершения текущей игры обязательно попробую.

Ещё забыли упомянуть о moai SDK getmoai.com/, поддержка облачных игр из коробки, 2D, Lua, бесплатен (или почти бесплатен). API сейчас скудноват, но его можно расширять самому — то, чего так не хватает в Corona.

Ещё 3D движек OGRE можно запускать на андройде и iOS, но с ним сложнее.
Если по теме, то выбор тестового сигнала обусловлен тем, что его очень легко генерировать. Это 3 меандра кратной частоты. Вот набросал осциллограммку:
Я последнее время пишу на Lua игры под iOS и Android с помощью Corona SDK, Cocos2D забыл как страшный сон, кода стало раз в 10 меньше.

Information

Rating
3,120-th
Location
Воронеж, Воронежская обл., Россия
Date of birth
Registered
Activity