Трохи збірки

Після прочитання цієї статті про блокування вільних буферів і, побачивши використання 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;
 }

Крикету світ чекає новий світовий порядок

25 серпня 2009 по Prashant · Коментарі
Рубрики: різне

Після серії тестів протягом п'яти і приблизно через два місяці, Англія меліорованих попелу.

Давайте поговоримо про команду-переможниці першої - їх середній замовлення в середньому ", якщо ви не хочете до критичної. Вклад 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 і Дивовижний Огляд

15 серпня 2009 по Prashant · Коментарі
Рубрики: різне

Ось два посилання на обстеження, ШКТ (система контролю версій) і дивним (віконний менеджер) спільноти. Якщо ви використовуєте одну з них, вийміть деякий час, щоб заповнити анкету. Думайте про це як найпростіший спосіб внести свій вклад в програмне забезпечення ви використовуєте.
Ось посилання:

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

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

Примітка - (Як знайти на цих сторінках, а в нижній частині :) ) -
"Якщо у вас є печиво включений, ви завжди можете уявити частково заповнений опитування, і повернутися в свої відповіді на більш пізній час, завершивши його пізніше".