Немного сборки

После прочтения этой статьи о блокировки свободных буферов и, увидев использования CAS (сравнить и своп), я чувствовал, что размещение сборки кода, чтобы сделать то же самое. Используйте случае там было написать собственный метод и вызывать его из Java (еще в 1.5, когда одновременно структур данных в Java были более или менее несуществующие). Не мудрствуя лукаво, я раскрыть код на вас :) . Во-первых, для СПС и второй для вычисления НОД по алгоритму Евклида (это могут быть найдены во многих местах и ​​учебных пособий, а).

Скомпилируйте и запустите инструкцию gcc file_name.c ; ./a.out

Сравните и Обмен

   # Include 
  # Include 
 / / Обмен - NewValue, comperand старое / ожидаемое значение
 / *
  * Функция фактически выполняет следующие вещи - если значение в * DEST равно OldValue затем заменить его NewValue еще оставить его без изменений: не все эти атомарно
  *
  * Есть два варианта возврата
  * 1.is начальное значение * DEST и оставить бремя вызова FXN сравнить его с oldval
  * 2.  сделать это здесь и вернуть 0 или 1, то это должно быть более эффективным
  ** /

 / * Позже изменить его в макросов * /
 Int CAS (Int * НАЗНАЧЕНИЕ, OldValue Int, Int NewValue) {
	 Е ("(% D,% D,% г)", * НАЗНАЧЕНИЕ, OldValue, NewValue);
	 / * Int CAS (INT DEST, Int OldValue, Int NewValue) {* /
	 / * Int CAS (INT DEST, Int NewValue, Int OldValue) {* /
	 Int результат = 1 ;/ * 1 показывает, что CAS успешно и 0 показывает, что он не * /
	 / * Кстати нужно установить флаг см для затирания!  * /
	 volatile__ __asm__ __ (
			 "Movl% 2,%% EAX \ п \ т"
			 "Movl% 3,%% EBX \ п \ т"
			 "Movl 0%,%% ECX \ п \ т"
			 "LOCK \ п \ т"
			 "CMPXCHG%% EBX, (%% ECX) \ п \ т" / * должны быть блокировки на одной строке * /
			 "Совершено JZ \ п \ т"
			 "Movl $ 0,% 1 \ п \ т"
			 "Совершено: \ п \ т"
			 : "= М" (Dest), "= г" (результат)
			 "Г" (OldValue), "г" (NewValue), «м» (Dest)
			 : "% EAX", "% EBX", "ECX", "CC"
			 );
	 Е ("(% D,% D,% г)", * НАЗНАЧЕНИЕ, OldValue, NewValue);
	 возвращение результата;
 }

 / * TODO
  * Написать еще АНМ FXN которая ставит выше FXN в то время цикла и продолжать пробовать, если он успешно * /

 Int основных () {
	 Int = 5, б = 6;
	 Int * с = (INT *) таНос (SizeOf (INT));
	 * С = 6;
	 / * Int C = 6, * /
	 Е ("% г \ п", CAS (C, B, б));
	 Е ("% г \ п", CAS (C, B));
	 Е ("% г \ п", CAS (С, А,));
	 Е ("% г \ п", CAS (C, B, б));
	 * С = 6;
	 / * С = 5, * /
	 Е ("изменение значения с * к% г \ п", * с);
	 Е ("% г \ п", CAS (C, B, б));
	 Е ("% г \ п", CAS (C, B));
	 Е ("% г \ п", CAS (С, А,));
	 Е ("% г \ п", CAS (с, а, б));
	 Е ("% г \ п", CAS (C, B));
	 return 0;
 }

Форматирование ноты - кажется WP подсветку синтаксиса добавления В конце концов, игнорировать это.

НОД

 # Include 
 Int НОД (INT A, INT B) {
     Int результат;
     / * Вычислить Наибольший общий делитель по алгоритму Евклида * /
     __asm__ __ volatile__ ("movl% 1,%% EAX;"
                           "Movl% 2,%% EBX;"
                           "ПРОДОЛЖЕНИЕ: cmpl $ 0,%% EBX;"
                           "Совершено е";
                           "Xorl%% EDX, EDX%%";
                           "Idivl%% EBX;"
                           "Movl EBX%%%% EAX;"
                           "Movl%% EDX, EBX%%";
                           "JMP ПРОДОЛЖЕНИЕ";
                           "Совершено: movl%% EAX,% 0,": "= г" (результат): "г" (а), "г" (б)
     );

     возвращение результата;
 }

 Int основных () {
     int, первое, второе;
     Е ("Введите два целых числа:");
     Scanf ("% D% D", и первое, и второе);

     Е ("НОД% D и% D% г \ п", первый, второй, НОД (первый, второй));

     return 0;
 }

Крикета мир ждет новый мировой порядок

После серии тестов на протяжении пяти и примерно через два месяца, Англия мелиорированных пепла.

Давайте поговорим о команде-победительнице первой - их средний заказ в среднем ", если вы не хотите к критической. Вклад Greame Свана с битой будет считаться не меньше, чем вклад с мячом. Стюарт Широкий - лучший универсал, не было стартер на 5-й тест. Эндрю Штраус был единственным последовательным бэтсмен и Джимми Андерсон был единственным последовательным котелок.

Дело в том, чтобы не ругать достижения команды-победительницы, но и в перспективе тот факт, что несмотря на все эти, Австралии потеряли. Вы должны думать на несколько секунд, если просили назвать их лучшими котелок. Право, это было BW Hilfenhaus. Hauritz превзошли ожидания everbody, но еще не был достаточно хорош, чтобы быть выбран в течение двух из пяти тестов. Южная Африка не стала мировой било без счетчика мирового класса, Австралия не может надеяться остаться один без одного хорошего достаточно одного по крайней мере. Маг покинул сцену, и это не похоже на искусство больше, забыть магию. Понтинг возвышается среди простых смертных и Майкл Кларк встает очень часто, но, что делает их команда с очень хорошими игроками и не очень хорошая команда.
Пепел 2009 года будут помнить за последние Пепел Эндрю Флинтофф в, прибытие Стюарт Широкий как универсал (если он добавит еще несколько Пепел фольклор его многообещающее начало), и один из наиболее ярким дебютом века все время Тротт, но он также будет вспомнил, как точки, где IFS и возражайте о первенстве Австралии были, наконец, положить на отдых, она закончилась. Не поймите меня неправильно, они могут раскопать Майк Хасси и Стюарт Кларк, но Вы чувствуете, что вклад всех времен великих, когда они пропадают без вести. Иногда они приходят, чтобы напомнить вам о себе в IPL, но все же они не могут быть заменены. Давайте чувствую себя счастливым за то, что видел Варн, МакГрат и Gilchrist играть вместе и при поддержке Waughs, Понтинг, Хайден, Мартин и Лангер.

Забегая вперед, Южная Африка всегда будет оставаться очень хорошая команда, но они должны выиграть полуфинал и быть более последовательными во всем мире, Пакистан останется загадочным блестящий, индийский молодые игроки, вероятно, будет трудно заполнить обувь чрезвычайных предшественников. Шри-Ланка должна продолжать показывать проблески искусства в ремесло. Но, мы, возможно, придется ждать где-то до того, все из доминирующей командой или перед капитан жалуется на отсутствие конкуренции, как Стив Вог сделал один раз.

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

рубин один вкладыши для создания хэш-

Вчера при прохождении одного из моих старых программ, я нашел это написано мной некоторое время назад:

#begin magic
hash=Hash[*CGI.unescape(raw_text).split('&').map{|x| b=x.split("=");b.push(nil) if b.size==1;b}.flatten]
#end magic

Чтобы убить приостановки позвольте мне раскрыть этот raw_text выглядит

 

, Права она была вырезана из PayPal подтверждение оплаты.

Над линией, если нарушена в части читает лучше:

  unescaped_array = CGI.unescape (raw_text). раскол ("&")
   unescaped_array = unescaped_array.collect {| х | = б x.split ("="); b.push (ноль), если b.size == 1, б}
   flattened_array = unescaped_array.flatten
   хэш = Hash [* flattened_array] 

Давайте сделаем отдельные шаги в IRB:

  IRB (основной). 009:0> = unescaped_array CGI.unescape (raw_text) сплит ('&')    

 => ["Успех", "mc_gross = 10,00" "protection_eligibility = Неприемлемые", "payer_id = U7PPJJ4TSJ47E", "налоговая = 0.00", "payment_date = 9:45:30 10 июля 2009 PDT", "В ожидании payment_status = "]                                                                         

 IRB (основные): 013:0> = unescaped_array unescaped_array.map {| х | = б x.split ("="); b.push (ноль), если b.size == 1, б}  

 => [["УСПЕХ", ноль], ["mc_gross", "10.00"] ["protection_eligibility", "не имеющие права"] ["payer_id", "U7PPJJ4TSJ47E"] ["налог", "0.00"] , ["payment_date", "9:45:30 10 июля 2009 PDT"] ["payment_status", "В ожидании"]]                               

 IRB (основные): 014:0> = flattened_array unescaped_array.flatten     

 => ["Успех", ноль ", mc_gross", "10.00", "protection_eligibility", "не имеющие права", "payer_id", "U7PPJJ4TSJ47E", "налоги", "0.00", "payment_date", "9:45: 30 10 июля 2009 PDT "," payment_status "," В ожидании "]
 IRB (основные): 015:0>
 хэш = Hash [* flattened_array]
 => {"Налог" => "0.00", "payment_status" => "До", "payer_id" => "U7PPJJ4TSJ47E", "mc_gross" => "10.00", "успех" => ноль ", payment_date" = > "9:45:30 10 июля 2009 PDT", "protection_eligibility" => "Недопустимые"} 

Кстати, * называется оператор восклицательный знак в рубине

Еще один способ создать хэш из "массива пар" является использование инъекционных:

  хэш = [[1,2], [3,4]] вводят ({}). {| результате элемент | результат [element.first] = результат [element.last];} результат 

Существует еще один способ :) Напишите цикл, который я оставляю в качестве упражнения для читателей!

Вот несколько вариантов использования не связаны создания хэш из массива:

  IRB (основные): 005:0> [1,2,3,4,7,9] Аргумент group_by {| х | х | <5.?  : Меньше больше ::}

 => {: Меньше => [1, 2, 3, 4]: большая => [7, 9]} 

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

Gmail, дурак и msmtp исправления

Если вы используете Mutt и SMTP для доступа к Gmail. Вот (плохие) новости. Крутые парни в Google снова изменил сертификат. Ах, вы спросите - как это знать? Просто дурак начали жаловаться на плохое сертификат при попытке использовать msmpt, печально известный "msmtp: TLS сертификат проверки не удалось. Сертификат не получил известный эмитента встретил меня на экране.

Чтобы пересечь подтвердить -
Просто запустите следующие

$ msmtp --serverinfo --host=smtp.gmail.com --tls=on --port=587 --tls-certcheck=off

На месте старого сервера Thwate теперь вы получаете следующие эмитента в сегменте
Issuer:
Common Name: Google Internet Authority
Organization: Google Inc
Country: US

К счастью, исправить это просто, вот то, что нужно делать на Debian

# apt-get install ca-certificates
# dpkg -s ca-certificates|grep Version
Version: 20090814

После этого просто измените следующую строку в вас ~~~V /. Msmtprc

tls_trust_file /certs/Thawte SSLWeb Server Roots/thawte Premium Server CA/Thawte Premium Server CA.pem

tls_trust_file /certs/Thawte SSLWeb Server Roots/thawte Premium Server CA/Thawte Premium Server CA.pem

к

tls_trust_file /usr/share/ca-certificates/mozilla/Equifax_Secure_CA.crt

Git и Удивительный Обзор

Вот две ссылки на обследование, ЖКТ (система контроля версий) и удивительным (оконный менеджер) сообщества. Если вы используете одну из них, выньте некоторое время, чтобы заполнить анкету. Думайте об этом как самый простой способ внести свой вклад в программное обеспечение вы используете.
Вот ссылки:

Git - http://www.survs.com/survey?id=2PIMZGU0&channel=Q0EKJ3NF54

Awesome - http://www.survs.com/survey?id=8BVEV3FO&channel=BH07CQ040D

Примечание - (Как найти на этих страницах, а в нижней части :) ) -
"Если у вас есть печенье включен, вы всегда можете представить частично заполненный опрос, и вернуться в свои ответы на более позднее время, завершив его позже".