Tencent (https://ru.wikipedia.org/wiki/Tencent), крупнейший интернет-провайдер в Китае, начал (http://www.theregister.co.uk/2016/10/11/tencent_makes_first_... перевод некоторых своих разработок в разряд открытых проектов:
- Под лицензией BSD открыт код библиотеки Tinker (https://github.com/Tencent/tinker), предназначенной для горячего наложения патчей на уже установленные приложения для платформы Android. Tinker позволяет организовать распространение обновлений для программ без необходимости переустановки APK-пакета. Поддерживается внесение изменений в исполняемые файлы DEX (Dalvik EXecutable), библиотеки и связанные с пакетом ресурсы.
- Под лицензией Apache 2.0 открыт код проекта libco (https://github.com/Tencent/libco), предоставляющего средства для использования сопрограмм (coroutine) в программах на языках C/C++. Библиотека широко используется на бэкендах (десятки тысяч серверов) популярной в Китае службы обмена сообщениями WeChat (https://ru.wikipedia.org/wiki/WeChat). Библиотека libco позволяет достаточно просто перевести приложения, занимающиеся последовательной обработкой запросов, на параллельно выполняемые сопрограммы, позволяя сохранить синхронный стиль разработки, но обеспечивая асинхронное выполнение. Благодаря реализации режима copy-stack, библиотека может применяться в сервисах, обслуживающих десятки миллионов TCP-соединений.- Под лицензией BSD открыт инструментарий QTAF (https://github.com/Tencent/QTAF), предназначенный для организации автоматизированного тестирования серверов, облачных систем и приложений. В том числе предоставлены средства для автоматизированного тестирования интерфейса пользователя, генерации отчётов и управления процессом тестирования. Специфичные для каждого окружения особенности описываются в специальных драйверах.
URL: http://www.theregister.co.uk/2016/10/11/tencent_makes_first_.../
Новость: http://www.opennet.me/opennews/art.shtml?num=45330
> Tinker позволяет организовать распространение обновлений для программ
> без необходимости переустановки APK-пакетаЕсли я правильно понимаю, то эта новость обрадует вирусописателей.
>Known Issues
>There are some issues which Tinker can't dynamic update....
> 3. Due to Google Play Developer Distribution Agreement, we can't dynamic update our apk.Как я понял, гугл маркет не пропустит приложения с этой библиотекой?
Ему это и не нужно, там несколько месяцев назад внедрили свою технологию diff'ов. Пользователь качает небольшой diff и на его устройстве apk патчится.
Не знаю насчет несколько месяцев, как минимум год при обновлении качается далеко не весь APK.
Ммм да, верно. В июле это перешли на новую технологию, сильно уменьшающую размер этих диффов: http://android-developers.blogspot.com/2016/07/improvements-...
А в каком-то виде диффы, значит, давно.
Как я понял у вирусописателей подобные инструменты уже лет 100 как есть. Ибо декомпилить байт код Java в красивый код - легко, инструменты есть. Скомпилить со своей вставкой вредоносного кода декомпиленный код, а потом создать патч - раз плюнуть.
> Если я правильно понимаю, то эта новость обрадует вирусописателей.Да таких инструментов 1000. Самый известный, пожалуй, Lucky patcher.
верно верно, в андройд студио из коробки есть incremental build, те же патчи для dex
Топоры уже давно радуют последователей Раскольникова.
Можно сказать, что давно мечтал о сопрограммах в си. Надо же, кто-то не только мечтал, но и реализовал. Спасибо, товарищам! Надеюсь, получится применить.
http://software.schmorp.de/pkg/libcoro.html
Существует уже много лет, используется в перловом модуле Coro. Надо было не мечтать, а погуглить.
Реально это в сишке пробовал, или только погуглил? Мне рабочий обкатанный вариант нужен, а не предложенный набор недочётов.
Млять, комментарии в коде на китайском. НА КИТАЙСКОМ!!!
Еврошовинистов щёлкнули по носу.
А когда американские программисты успели стать еврошовинистами?
Я что-то пропустил?
А разве американские программисты высказывали недовольство комментариями на китайском?
Ну все, теперь Китаюшка точно с колен встанет!
> Ну все, теперь Китаюшка точно с колен встанет!Если Китай встанет, то все остальные лягут[1].
--------------
[1] https://www.youtube.com/watch?v=IWAgHoOcWJs
Да всё равно его уже учить пора. А тут и повод благородный.:)
ой, не факт! китайские богачи своих детей английскому учат раньше, чем китайскому
Начинать учиться нужно с примитивного.
> китайские богачи своих детей английскому учат раньше, чем китайскомуА американские родители учат своих детей французскому, и что с того? Впрочем, у китайцев есть поводы учить иностранный: у них там куча диалектов китайского и не всегда два китайца могут понять друг-друга. Но если они оба знают английский, то проблема исчезает. Такое англоязычное общение китайцев можно немало наблюдать на всевозможных конференциях, и если вы наберётесь наглости, подойдёте к ним и спросите, чего это они пренебрегают родным языком, то они вам как раз об этих диалектах и расскажут.
Но, в то же время, сейчас группы учёных, занимающиеся метаисследованиями (а это последний писк моды в научной методологии), вынуждены включать в себя одного китайского учёного, ну или если не китайского, то, хотя бы, говорящего на китайском. Потому что Китай нехило так вливает в науку, и даже несмотря на отток мозгов, умудряется публиковать довольно-таки много всяких разных материалов об интереснейших исследованиях, которые игнорировать просто глупо.
И на фоне этого я не вижу ничего удивительного в том, что и у программистов тоже появляются причины задуматься об изучении китайского языка. А если Китай займётся FOSS серьёзно, то...
> у них там куча диалектов китайского и не всегда два китайца могут понять друг-другаА комменты НА КИТАЙСКОМ!
Мораль? БЫДЛОКОД!
Какая-то фееричная солянка из взаимоисключающих параграфов.
В китайском много диалектов.
Китайцы часто не понимают друг друга, поэтому общаются на английском.
В сабжевом быдлoкоде комменты на китайском.
В итоге: НЕ ВИЖУ НИЧЕГО УДИВИТЕЛЬНОГО.Действительно, где же тут противоречие?
Иероглифы читаются по-разному на разных диалектах, но обозначают одно и то же. В письменном виде один китаец ВСЕГДА поймет другого китайца.
Интересно.
Тогда я все меньше понимаю, как этот товарисч пришел к выводу о необходимости изучения китайского программисту. Потому что теперь оказывается, что вообще все его аргументы мимо кассы.
перефразирую один коммент с хабра:
> Стыдно, считать, что имеешь отношение ИТ и не знать китайский хотя бы на базовом уровне.
Это больше к Индии относится, чем к Китаю
А на кой им ориентироваться на маргиналов?
А что в этом странного? Если бы вы полазили немного по их аналогу Github, вы бы обнаружили много кода с комментариями на китайском. И это нормально. Китайцы не воспринимают внешний мир как что-то большое и значимое, для них центр всего мира - это Китай.
中国 же жь!
Я подумал, что 中国 - это значит феньшуй, пошёл в переводчик и понял, что ошибся.. *ля.. :)
Не. Это вместе "Китай". Дословно "Центральная страна". Прямая отсылка к "Срединной империи". Отлично отражает традиционный взгляд китайцев на себя и мир вокруг, который, собственно, всегда их интересовал постольку поскольку.
Нужно продублировать на русском, что-бы всем там англоговорящим поплохело :)
Только сначала подучи, где употребляется дефис ;)
В дореволюционной орфографии бы через дефис писалось, кстати. Так что можно пойти на более глубокое извращение и комментировать свой код дореволюціонною ортографіею.
Имперский код. Пуклеру бы понравилось, если бы в его окружении был кто-то способный понять и объяснить ему эту идею.
> Нужно продублировать на русском, что-бы всем там англоговорящим поплохело :)А это только часть русскопишущих страдает комплексом неполноценности на тему языка. А англоговорящим пофигу на ваши комплексы. Пишите хоть на древнеболгарском, это же вы потом сами прочитать не сможете и у вас проблемы будут.
Я русский не смогу прочитать? Чего это?
это только часть русскопишущих считает, что так считает только часть русскопишущих
Не беда, для Хрома есть расширение Zhongwen: Chinese-English Dictionary (у Firefox вроде бы аналог Perapera). Там наводишь курсор на иероглиф, и сразу выделяется слово (а это либо один, либо несколько иероглифов) и появляется жёлтый блочок с переводом на английский. Я так достаточно быстро всякие китайские тексты читаю с ~80—90% пониманием.
Вообще часто комментарии на китайском встречаются в китайских проектах.
> Не беда, для Хрома есть расширение Zhongwen: Chinese-English Dictionary (у Firefox вроде
> бы аналог Perapera). Там наводишь курсор на иероглиф, и сразу выделяется
> слово (а это либо один, либо несколько иероглифов) и появляется жёлтый
> блочок с переводом на английский.Это будет дословный перевод. Что обычно *рня редкостная. Потому как у одного слова может быть куча значений - в зависимости от контекста. Не говоря уже о пословицах с поговорками, "крылатых словах"/идиомах.
> Я так достаточно быстро всякие китайские
> тексты читаю с ~80—90% пониманием.Даже не знаю что сказать.
> Он парит над характером, однажды выделенного слова
> (который представляет собой один или более символов),
> и желтый blochok и переведены на английский язык.и
> Общие замечания по китайской продукции часто встречается в Китае.Это из вашего же текста (русский -> упрощенный китайский -> русский).
> Это будет дословный перевод.Ну да, но для понимания ведь сойдёт.
> Потому как у одного слова может быть куча значений - в зависимости от контекста.
Дак там несколько значений и указывается, это же словарь. Я в зависимости от контекста и выбираю нужное.
> Не говоря уже о пословицах с поговорками, "крылатых словах"/идиомах.Вот зашёл на http://www.studychinese.ru/proverbs/ - для половины поговорок/пословиц перевод есть (сразу куча иероглифов выделяется), в отличие от гугла.
> Это из вашего же текста (русский -> упрощенный китайский -> русский).Одно дело переводчик, другое - словарь. Вот я гуглом перевёл второе предложение своё на китайский. Затем используя расширение Zhongwen, я наводил на каждое слово, подбирал нужный перевод, и у меня получилось:
> [it] [to hover] [at] [character], [immediately] [release - тут неверно, должен быть select, тут гугл с русского на китайский неправильно перевёл] [word] ([it] [is] [one] [счётный иероглиф] [or] [many] [character]) [and] [to show] [yellow] [with] [translate] [finish] [english] blochok.
> Это наводить на иероглиф, сразу освободить (правильно: "выделить") слово (это есть один или много иероглифов) и показывать жёлтое с переводом успешным на английский.Даже после дополнительного машинного перевода с русского на упрощенный китайский (а гугл китайский вообще переводит ужасно), смысл оказался понятен.
Зря вы так переводите. НИКОГДА! слышите ? Никогда! Не переводите один текст более одного раза!!!. Только 1 раз и только в 1 сторону. Нельзя перевести одну фразу с русского наанглийский и обратно на русский и при этом ожидать что утебя выйдет читабельный текст с изначальным ипонятным смыслом. Переводчик неимеет мозгов и после десятикратногоперевода какого то текста он может половину слов вобще выбросить наверна...
Играл в один проект где общается народ из большинства цивилизованных стран мира и сталкивался с этим делом. Я не знаток английского (в школе я его изучал сидя в углу-парты не хватило,ага и вытянув ноги полуразвалившшись - ьтак удобней спать ,ага) оценка 2...-4.
Так вот общаясь с иностранцами через переводчик я не раз убедился что один текст можно переводить ТОЛЬКО 1 раз и только на Один язык. Т.е. Нельзя перевести с русского на английский потом на русский, так же нельзя перевести с русского на английский потом на французский или испанский.
Впроцессе общения я все больше начал понимать английский язык (больше на интуитивном уровне). и начал смотреть на то что я ввожу впереводчик и какой результат он мне выдает. нередко приходилось заменять свои слова и даже поначалу пересоставлял свой текст чтобы было понятно оппененту. Тоесть Мало просто написать текст нарусском засунуть его в переводчик и ждать от него результата. Для хотя бы 90%го понимания Нужно составлять свойтекст/фразу на чистом грамотном русском. итолько после этого можно ожидать что тебя поймет твой оппонент с первого раза.
А в случаях с иероглифами думаю нужно быть еще более аккуратным чтоли...
Ну... это если вы хотите позаботиться о том чтобы вас поняли..З.Ы, Да по рускаму у меня тоже галимый кол был :D
> Зря вы так переводите. НИКОГДА! слышите ? Никогда! Не переводите один текст
> более одного раза!!!. Только 1 раз и только
> в 1 сторону.Открою страшную тайну: даже 1 раз частенько получается полная лажа с потерей или изменением смысла. Потому как кроме различных значений слов, устойчивых выражений, т.д. есть еще такая штука, как порядок слов в предложении, окончания, падежи и т.д.
Просто при двойном переводе это становиться особо заметно, да и следует учитывать, что переводчики обычно используют аглицкий в качестве "посредника".
Но я походу повторяюсь.Просто поверьте, вряд ли кто-то "из тех" поймет то же:
"If only there were acorns, said vantuzyatnik." ( вместо said тут более подходит belives, но увы, таков гугло-перевод).
А уж сколько непоняток может быть с тем же двойным отрицанием ...
Я в курсе. Перечитав текст я хотел еще добавить но передумал ибо парой нюансов и строк там бы дело не оборшлось а мы всетаки не на форуме с обсуждением переводчиков...
А так по идее да.. моя фонтазия разыгралась так что хоть целый видеокурс не снимай на тему " Как правильно переводить с помощью онлайн переводчиков чтобы Вас поняли ".П.с. Может вы и пошутили с вантузятником, но я повторюсь что нужно использовать Чистый грамотный Русский язык. Никаких слов паразитов. и никакого сленга Темболее современного молодежного. Хотя если у вас есть время и знания на обьяснение значения этого слова или 100% уверенность что оппонент знает о чем речь то вопросов нет...
И да про полную лажу я тоже сказал что частоприходится переставлять свои предложения и тексты...
Думаю чтобы понять что такое работа переводчика в реальном времени можно или даже Нужно посмотреть TV. Например когда встречается Наш президент с кем-то из иностранцев и у него не подгготовлен текст, или у него идут ответы на вопросы и прочее К чему не подготовишься заранее.. Президент когда что-то пытаетсясказать он думает Не только о том что он пытается сказать а еще пытается подобрать Правильные слова в том числе и для того чтобы переводчик правильно понял его мыссль и перевел ее так как нужно.
п.с. Сейчас я тв как и новости редко оч смотрю но раньше еще в 90х годах нередко наблюдал. Вродека жется что он ппросто сидит " ...ам.. ...э..." незнает что сказать... Но это несовсемтак... Ибо да, то что мы говорим между собой американец не поймет так же быстро и точно как мы...
Многие наши простые фразы на вроде "пойди принеси воду" можжно написать разными способами и вразных ситуациях звучат по разному. и порой их лючше разжевать Сделать более сложное предложение зато понятное Нерусскому человеку.
> Я так достаточно быстро всякие китайские тексты читаю с ~80—90% пониманиемЭто иллюзия.
Открыл первый попавшийся файл https://github.com/Tencent/tinker/blob/dev/third-party/aosp-...Теперь я знаком с китайским программированием:
@Override
public int compareTo(Code other) {
int res = CompareUtils.sCompare(registersSize, other.registersSize);
if (res != 0) {
return res;
}
res = CompareUtils.sCompare(insSize, other.insSize);
if (res != 0) {
return res;
}
res = CompareUtils.sCompare(outsSize, other.outsSize);
if (res != 0) {
return res;
}
res = CompareUtils.sCompare(debugInfoOffset, other.debugInfoOffset);
if (res != 0) {
return res;
}
res = CompareUtils.uArrCompare(instructions, other.instructions);
if (res != 0) {
return res;
}
res = CompareUtils.aArrCompare(tries, other.tries);
if (res != 0) {
return res;
}
return CompareUtils.aArrCompare(catchHandlers, other.catchHandlers);
}
Стоит заметить, что этот код особо и не улучшишь, особенно, если хочется, чтобы он гарантированно выполнялся настолько быстро, насколько это возможно.
Нууу, можно дефайнами сделать "дизайн", чтоб выглядело как-то так:@Override
public int compareTo(Code other) {
RETURN_NON_ZERO CompareUtils.sCompare(registersSize, other.registersSize)
RETURN_NON_ZERO CompareUtils.sCompare(insSize, other.insSize)
RETURN_NON_ZERO CompareUtils.sCompare(outsSize, other.outsSize)
RETURN_NON_ZERO CompareUtils.sCompare(debugInfoOffset, other.debugInfoOffset)
RETURN_NON_ZERO CompareUtils.uArrCompare(instructions, other.instructions)
RETURN_NON_ZERO CompareUtils.aArrCompare(tries, other.tries)
return CompareUtils.aArrCompare(catchHandlers, other.catchHandlers);
}Хотя, я бы тут ещё поигрался со стандартными паттернами программирования на плюсах, пиши я на них.
Интересно, а перегрузить case можно? :)
Внезапно, это Java, а не С++.
> Нууу, можно дефайнами сделать "дизайн", чтоб выглядело как-то так:
> RETURN_NON_ZERO CompareUtils.sCompare(registersSize, other.registersSize)Мало того, что пихать инструкции, изменяющие поток выполнения в макросы - это плохая практика, так ещё и использовать препроцессор в Java не очень разумно, хотя возможно, конечно.
Оно просто написано так, что не сразу и понимаешь, что это не C (в том и проблема). А для сей такие макросф - нормальное решение, рабочее.
Вам в винду ещё примитивные оптимизаторы не завозили?
> Вам в винду ещё примитивные оптимизаторы не завозили?У нас есть логика. Её всем иметь желательно, вне зависимости от используемых инструментов.
Если Вы не заметили или не поняли значения слов "гарантированно выполнялся" или бесконечно верите в идеальную оптимизируемость любой виртуальной машины Java, это не моя проблема.
Китайский код - это брутальное решение алгоритма без использования циклов, массивов и прочих изящных конструкций.
> Китайский код - это брутальное решение алгоритма без использования циклов, массивов и
> прочих изящных конструкций.Как хороший друг читая код программы желаю вам добра!
> Млять, комментарии в коде на китайском. НА КИТАЙСКОМ!!!Ааа, а на русском "комментарии в коде" им не сильно помешали.
Комментарии - ладно. Там еще тексты исключений на китайском!
Прекрасно такое в логах будет наблюдать. :)