All streams
Search
Write a publication
Pull to refresh
21
0
Артур Махонько @nibb13

Разработчик

Send message
С проблемой частой записи на флэшку (логи) я справился относительно просто: пишу все логи в /tmp (который расположен в ramdrive) и по cron'у проверяю свободную память. Как только превысило определённый предел — сливаю на флэшку. В итоге вся мелочь пишется редко и «одним куском». Флэшки живут годами в таком режиме.
У меня ещё и весь server-side на shell-script написан, т.к. почти все прочие интерпретаторы запускать там очень больно, медленно и печально.

Вообще, кроме веба у меня на роутере ещё крутится интернет-радио (icecast2 + ices, ogg без перекодирования на роутере) и sshd, в т.ч. туннель через него.

И всё это сделано на старой штатной прошивке D-Link'а, которая для этого не предназначена совсем.
Я на роутерах обычно lighttpd для этих целей поднимаю. Как минимум потому, что памяти у меня выше 32 Мб не бывает. =)
Фишка, которую часто использую. Не совсем про curl, скорее про shell / bash script. Но и оригинальная статья не совсем про JS. :)

Внимание: в коде используется небезопасный eval, не копируйте это бездумно на важный прод!!!

Разделение по переменным STDOUT / STDERR / EXIT CODE в вызове curl из shell
call_curl () {
	# prepared command line for curl call
	CURLARGS="-i https://httpbin.org/get?answer=42"

	# Calling curl & capturing stdout, stderr and exit code using
	# tagging approach by Warbo, ref: http://stackoverflow.com/a/37602314
	CURLOUT=$({ { eval "curl $CURLARGS"; echo -e "EXITSTATUS:$?" >&2; } | sed -e 's/^/STDOUT:/g'; } 2>&1)
	CURLEXITSTATUS=$(echo "$CURLOUT" | grep "^EXITSTATUS:" | sed -e 's/^EXITSTATUS://g')
	CURLSTDOUT=$(echo "$CURLOUT" | grep "^STDOUT:" | grep -v "^EXITSTATUS:" | sed -e 's/^STDOUT://g')
	CURLSTDERR=$(echo "$CURLOUT" | grep -v "^STDOUT:\|^EXITSTATUS:")
	
	if [ $CURLEXITSTATUS -ne 0 ]; then
		echo -e "Error in curl: $CURLSTDERR" > /dev/stderr
		return 1;
	else
		# do something with $CURLSTDOUT and do output
		return 0;
	fi
}

Классная шпаргалка, спасибо!
И ещё новости: Payoneer пишут, что новые средства не будут зачисляться на старые карты, несмотря на разблокировку. Планируют сменить эмитента карт.

Ориг. цитата
Will I be able to receive new funds to my card?

All future payments will continue to be received to your Payoneer currency balance, not your card. Even though the FCA announced that the cards are safe to use, we will offer a new card issuer soon to ensure the long-term safety of your earnings.

(ref: blog.payoneer.com/home-page/wirecard-in-the-news-update-regarding-wirecard-and-your-prepaid-card)
Curve тоже через Wirecard и тоже не выдаёт карты в exUSSR.

Вопрос конкуренции в частично пересекающихся услугах и географии. Попросту на форуме Payoneer их упоминают в позитивном ключе («Они, вот, сделали. А вы?») и те, кто могут, грозятся к ним уйти если Payoneer будет наплевательски относится к своим клиентам.
На форуме пишут о Curve и ANNA Money. Спектр услуг у них не полностью совпадает с Payoneer, но частично конкурируют.
И немного вынужденный шаг: конкуренты уже подсуетились и на форуме Payoneer об этом постоянно упоминают.
Пфф!..

image

И всего делов.
Payoneer заявили что вернут деньги пользователям не дожидаясь снятия блокировки FCA:

www.youtube.com/watch?v=CkbMv-7AaMQ
Печаль в том, что все так или иначе завязаны на одних и тех же эмитентов карт. Так что смена «провайдера» будет сменой шила на мыло.
«А никак, мне не заплатили и я уже всё простил».
Их саппорт на форуме пишет, что все отделы сейчас работают сверхурочно. Там наверняка тот ещё адок творится.
Да и бессмыссленно в принципе: "… самолёт целый на земле стоит, а внутри все как живые сидят..."

Лучше уж человеков железобетонными делать.
Ну, тут речь про формат файла исходников всё же. Хотя и сам SWF был подробно описан самими Adobe, так что чисто теоретически написать свой Flash Player можно.
FLA с какой-то из версий стал обычным ZIP-ом с XML-ками внутри. А по поводу компиляторов — mtasc и позже Haxe вполне себе существовали ничего не нарушая.
О защите от воровства ресурсов из флэшевого контейнера ActionScript-программеры думали всерьёз и много. Толком никто ничего не добился. Историю из своего опыта расскажу:

Один мой приятель-коллега разработал «супер-пупер-защиту» от кражи ресурсов из SWF. Работала она следующим образом: SWF шифровалась чем-нибудь достаточно криптостойким, ключ и алгоритм дешифрования помещались в класс на ActionScript и специальный кодогенератор «размазывал» этот класс по 100K+ классам со случайными названиями и кучей связного «мусорного» кода. Результат компилировался в ещё один SWF-wrapper вместе с зашифрованной оригинальной SWF. Распаковывалось оно в памяти и подгружалось в рантайм штатными средствами Flash. Попытка декомпилировать и изучить алгоритм дешифрования очевидно проваливалась. Коллега готовил мешки для денег от продажи «невзламываемой защиты»…

Я же загнал Standalone Flash Player целиком под отладчик, загрузил в него эту супер-секьюрную SWF, подождал пока отобразится контент, снял дамп памяти всего флэш-плеера и по сигнатурам нашёл там две SWF — wrapper, загруженный с диска и расшифрованную оригинальную. Две с половиной минуты ушло.
С высоты своей колокольни:

  • Почти полноценные TCP-сокеты (а в случае с AIR ещё и UDP)
  • Отличный API для анализа и генерации звуков. Быстрый и точный. Браузеры уже тоже научились, вроде бы, но на деле — медленно и глючно.
  • Всё в одном контейнере (SWF), но есть возможность подгружать внешние файлы в любой момент
  • Одна большая SWF-ка на медленном канале? Не проблема: Flash отображает контент и выполняет скрипты как только загружены все ресурсы текущего кадра. Да-да! SWF ещё грузится, а графика и код уже работают!
  • Гибкая и надёжная очередь загрузки ресурсов «из коробки» (за счёт того самого размещения ресурсов в кадрах таймлайна) Никаких «ой, шрифт не успел загрузиться, да и ладно, покажем так» не случалось в принципе.
  • Справка по языку / API полная, однозначная и в одном месте.
  • JIT и Alchemy. Плюс аппаратное ускорение графики (глючило, правда) До всяких Unity и WebGL'ов. При этом ощутимо менее требовательно к ресурсам.


Про «более зелёную траву» можно и ещё повспоминать.

Information

Rating
Does not participate
Location
Одесса, Одесская обл., Украина
Registered
Activity