LINUX.ORG.RU

Избранные сообщения KennyMinigun

Курс «LFS101x Introduction to Linux» от Linux Foundation стартует 1 августа

 , , , ,

Группа Linux General

Курс будет проходить на платформе edX и ориентирован на получение практических навыков работы в Linux с графическим интерфейсом и командной строкой. После успешного окончания выдается бесплатный сертификат, можно также за $250 получить платный с подтверждением личности. Курс рассчитан на 40-60 часов, никаких особых требований для зачисления нет. Рекомендуется для программистов, системных администраторов и пользователей, которые работают с Linux. Раньше стоимось этого курса на сайте Linux Foundation составляла всего $2400.

Введение от Линуса Торвальдса

>>> Записаться на курс (edx.org)

timuaz
()

Работа с AWK

 ,

Всем привет, такая проблема, когда выполняю вот такую команду в командной строке:

awk '{print 100 * (12/123) - 100}'

Ничего не происходит. Переходит на новую строчку и никакого вывода.

maison999
()

Перенос mysql без даунтайма

 

А как ВЫ переносите живой и работающий mysql сервер без даунтайма? :)

//ну или создаете новую реплику :)

tazhate
()

Хочу научиться пользоваться Vi iMproved

 

при этом мне кажется, что людей дико обманывают, заставляя как обезъянок постоянно жать Insert, Escape, Shift + ;wEnter. а старый добрый Ctrl + S уже занят терминалом, вот жеж незадача.

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

щито поделать? сейчас подумываю о том, чтобы забиндить на F5 комбо с escape, сохранением файлика, запуск .sh скрипта для выполнения какой-то задачи и возрат в обратный режим. хоть так..

алсо, реквестирую годноту для vim: must have скрипты всякие, плугины, какими вы пользуетесь. чтобы созерцать хакерскую консольку с vim было в удовольствие.

ЗЫ: vim использую 4 года, то есть, не надо тут рассказывать как из него выйти :) просто интересует ваша практика, как им пользуетесь вы. может я чего-то упустил..

Spoofing
()

Тема тупых вопросов о Vim.

 ,

Есть вопрос. И даже не один. Начну с главного, т.к. сил терпеть более нет.

Как сделать, чтобы буфер обмена вима перестал быть бешеным ублюдком? Например, я копирую кусок текста из фотошопа (прости, господи):

iPhone 3GS 16GB		iPhone 4 16GB		iPhone 4 S16 GB		iPhone 5 S16 GB

В Виме я получаю вот это:

<iPhone>    <iPhone>    iPhone 4 S16 <GB>   iPhone 5 S16 <GB>   Контакты</GB></GB></iPhone>
<GB></GB></iPhone>
<GS></GS>
<GB></GB>

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

Тупые вопросы буду пополнять. Хочу забороть вим. Надеюсь на (не)понимание.

coderage
()

Как сделать иконку приложения или переместить его на рабочий стол убунту?

Здравствуйте. Я установил себе хром и трукрипт на убунту. Открываю их только через поиск. Как сделать так, чтобы они появились на рабочем столе?

the_genius
()

Победа над скайпом

 , ,

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

В результате получилось нечто, приводящее мой трей в более-менее приятный вид и делающее меня счастливым. Увы, на клавиатурах в Эквестрии всего две клавиши: Ctrl+C и Ctrl+V, поэтому за качество извиняйте.

Иконки для своей темы тоже вышли не очень, но в последний момент пришел MiniRoboDancer и немного помог, сделав иконки терпимыми.

enjoy (github)

Надо бы еще ебилд выложить, но он все равно слизан с ебилда skypetab-ng, как и почти все остальное.

derlafff
()

FreshPlayerPlugin — PepperFlash в Firefox

 , , , , ppapi

Flash плеер всё заменяют и заменяют, но никак не заменят полностью. Новые и сверхновые фичи браузеров это замечательно, но Flash бывает всё ещё нужен. К сожалению, доступная NPAPI браузерам версия застыла на 11.2, а новые версии выходят только в составе Chrome. Поэтому я делаю адаптер, который сможет быть посредником между PPAPI плагином и NPAPI браузером. Это такая штука, которая позволит использовать свежий Flash в Firefox, Opera и других браузерах, в которых работают плагины.

https://github.com/i-rinat/freshplayerplugin

i-rinat
()

Atom — программируемый редактор 21-го века

 ,

Группа Open Source

Github опубликовал исходные тексты своего редактора Atom под лицензией MIT. Ранее распространялась бета версия редактора, доступная только в бинарном виде.

Редактор предоставляет широкие возможности по настройке и расширению своей функциональности. Ядро редактора построено на базе проекта Chromium и сопутствующих ему веб-технологиях. Плагины и расширения редактора создаются с использованием Javascript, CSS и HTML.

Разработчики также предоставляют репозиторий сторонних расширений, в настоящий момент содержащий уже более 50-ти opensource компонентов.

Стабильная сборка редактора в настоящий момент существует только под Mac OS X, разработчики планируют выпустить Linux версию редактора.

>>> Подробности (atom.io)

maxcom
()

Производительность; илитный запил оптимальных реализаций и основы матчасти.

 , , ,

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

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

Изначально я хотел написать про то: что такое бесплатные вычисления на примере is_range() + сумма елементов массива, но тут выявилась смешная особенность, поэтому пока без is_range().

Начнём с простого - сумма елементов(float) массива. Как написать её быстро? Обычный крестопоц сделает так:

auto summ = accumulate(begin(vec), end(vec), 0.)

Этот код выдаёт 5.6GB/s(мы всё бенчим в л1д 32килобайта массив). Казалось бы, если бы мы слушали всяких «гуру», которые нам говорят: accumulate() - оптимизирован, «ты что умнее создатели stl"а?», «конпелятор умнее тебе - сам всё делает оптимально», «руками что-то делать слишком сложно и не нужно» - то мы бы там и остались с этими 5.6ГБ, но мы пойдём дальше и поймём почему так, и является ли это тем, что намн ужно.

Но посмотрев на код - он не векторизован:

	addq	$4, %rdx
	vcvtss2sd	-4(%rdx), %xmm2, %xmm2
	vaddsd	%xmm2, %xmm1, %xmm1

Почему? Патамучто это основная флоатпроблема: Он не ассоциативен - флоат не имеет в себе точных представлений всех чисел входящих в диапазон его «представления» т.е. порядкопроблемы.

Поэтому конпелятор НЕ ВЕКТОРИЗУЕТ флоат по умолчанию, ну никак. Даже такую банальщину.

Для решения этих проблем - есть ключик -funsafe-math-optimizations, который входит в -ffast-math, который кладёт на точность при вычислениях. Добавив его мы получаем уже 44.9GB/s.

Но теперь мы получаем ещё одну проблему - надо думать: «как бэ сунуть эту ключик не повредив там, где этот ключик не нужен».

Поэтому ноцанам, которые хотят быстро и не хоятт рандомных жоп из-за тупости конпелятора - пишут всё руками. Допустим на той же сишке это пишется так:

double memadd_autovec(buf_t buf) { //5.609465GB/s, либо 44.969652GB/s с ffast-math
  float * it = buf_begin(buf), * end = buf_end(buf), summ = 0.;
  do {
    summ += *it++;
  } while(it != end);
  return summ;
}

double hsumf(__v8sf v) {
  return (v[0] + v[1] + v[2] + v[3] + v[4] + v[5] + v[6] + v[7]);
}

double memadd_vec(buf_t buf) { //45.652002GB/s и класть на ffast-math
  __v8sf * it = buf_begin(buf), * end = buf_end(buf), summ = {};
  do {
    summ += *it++;
  } while(it != end);
  return hsumf(summ);
}

Т.е. разницы никакой нет, кроме нужной нам реализации горизантального сложение вектора. Когда я говорил пацану: «векторную сишку для написания быстрого кода юзать намного проще, чем плюсы» - поцан нипонимэ, да и любые пацаны скажут - ну дак с -ffast-math оба выдают по 45гигов - нахрен эта сишка нужна?

А вот зачем:

double memadd(buf_t buf) { //132.878440GB/s
  __v8sf * it = buf_begin(buf), * end = buf_end(buf), summ = {};
  do {
    summ += *it++;summ += *it++;summ += *it++;summ += *it++;
  } while(it != end);
  return hsumf(summ);
}

Это называется пацанский анролл копипастой, а вот заставить конпелятор нормально что-то разанролить очень сложно.

Если бы мы слушали всяких «гуру», которые нам вещают: «анрол говно и не нужен» - мы бы так и седели с 45-ю гигами, а так мы сидим с 132.878440GB/s. Т.е. анролл нам дал немного не мало ~300%.

Но основная мысль, которую толкают всякие «гуру» - это не надо следить за тактами/считать такты и прочее. Но мы о5 сделаем наоборот и посмотрим что будет.

Т.к. наш юзкейс упирается на 99% в throughput и дёргается одна инструкция, то нам достаточно просто считать теоретическую производительность для моего камня. 4.5(частота камня)*8(т.е. у нас камень с avx, то там вектор 32байта, либо 8флоатов.)*1(throughput нашей инструкции - в данном случае vpaddps из интел мануала). Т.е. 36гигафлопс, либо ~144гига. Т.е. мы сняли овер 90% теоретической производительности - остальные 10% у нас ушли в наши циклы, всякие горизонтальные суммы вектора и прочее, ну и конечно же чтение данных из кеша.

Но самое смешное - на моём хасвеле умножение имеет throughput 0.5 - т.е. на хасвеле умножение быстрее сложения. Это новая забористая трава у интела.

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

Поэтому очень смешно слушать, когда какие-то пацаны говорят: «float point имеет такую же производительность как и инты» - нет, оно имеет такоу же производительность лишь по причине того, что на штеуде инты тормазят так же, как и float.

И чтобы окончательно в этом убедится - мы взглянем на fma(вариации умножения со сложением/вычитанем), которые имеют throughput 0.5 - да, да - на хасвеле умножение+сложение в 2раза быстрее просто сложения. Это уже не просто трава - это что-то принципиально новое.

У целочисленного сложения же throughput 0.5 и казалось бы, если мы поменяем в нашей функции float на int - у нас будет сложение работать в 2раза быстрее, но это не так. Оно выдаёт те же 130гигов, а почему?

Вообще у камня есть такая фича, допустим у нас:

add $1, %reg0//вот тут инструкция add залочит регистр reg0
add $1, %reg0//а эта инструкция уйдёт в лок до особождения предыдущей инструкцией регистра reg0

Чтобы такой жопы небыло - есть специальная фича:

add $1, %reg0//lock reg0
add $1, %reg0//И тут вместо того, чтобы уйти в лок - камень вместо reg0 даёт инструкции любой свободный регистр.

Эта фича называется прееименование регистров, либо как-то так - мне лень гуглить.

Дак вот штука в том, что фича работает через жопу. Мне лень читать мануал и искать почему так, но штука в том, что она ограничивает throughput. На умножении и целочисленном сложении она огранивает throughput c 0.5 до 1.

И вот я решил заюзать сложении через fma:

__v8sf fmaadd(__v8sf a, __v8sf b) {
  return _mm256_fmadd_ps(_mm256_set1_ps(1.), a, b);// a + b * 1. == a + b.
}

double memadd_fma(buf_t buf) {
  __v8sf * it = buf_begin(buf), * end = buf_end(buf), summ = {};
  do {
    summ = fmaadd(summ, *it++);
  } while(it != end);
  return hsumf(summ);
}

Но меня ждала жопа: 27.347290GB/s, причем не анролл и ничего не помогал. Я уж подумал, что мануал наврал, но позже до меня допёрло: у неё latency 5тактов и ((4.5×8)÷5)×4 ~= 29гигов - т.е. я получаю производительность с её latency, но какой жопой оно так?

Потом я вспомнил, что гцц гинерит анрольный код вида:

add $1, %reg0
add $1, %reg0
//а не
add $1, %reg0
add $1, %reg1

Т.е. на неё вообще не работает переименовывание регистров - и инструкции постоянно в локе. Я это проверил и оказался прав. Ну и я написал такой мемадд:


__v8sf fmaadd(__v8sf a, __v8sf b) {
  return _mm256_fmadd_ps(_mm256_set1_ps(1.), a, b);
}

inline void fma_10way_finality(__v8sf * cache, __v8sf * it, __v8sf * end) {
  switch(end - it) {
    case 8:
      *(cache + 7) = fmaadd(*(cache + 7), *(it + 7));
      *(cache + 6) = fmaadd(*(cache + 6), *(it + 6));
    case 6:
      *(cache + 5) = fmaadd(*(cache + 5), *(it + 5));
      *(cache + 4) = fmaadd(*(cache + 4), *(it + 4));
    case 4:
      *(cache + 3) = fmaadd(*(cache + 3), *(it + 3));
      *(cache + 2) = fmaadd(*(cache + 2), *(it + 2));
    case 2:
      *(cache + 1) = fmaadd(*(cache + 1), *(it + 1));
      *(cache + 0) = fmaadd(*(cache + 0), *(it + 0));
    case 0:
      break;
    default: error_at_line(-1, 0, __FILE__, __LINE__, "bad_aligned");
  }
}

double memaddfma_10way(buf_t buf) {
  __v8sf * it = buf_begin(buf), * end = buf_end(buf), summ = (__v8sf){};
  __v8sf * cache = (__v8sf[10]){{}};
  uint64_t i = 0;
  while((it += 10) <= end) {
    *(cache + i) = fmaadd(*(cache + i), *(it - i - 1));++i;
    *(cache + i) = fmaadd(*(cache + i), *(it - i - 1));++i;
    *(cache + i) = fmaadd(*(cache + i), *(it - i - 1));++i;
    *(cache + i) = fmaadd(*(cache + i), *(it - i - 1));++i;
    *(cache + i) = fmaadd(*(cache + i), *(it - i - 1));++i;
    *(cache + i) = fmaadd(*(cache + i), *(it - i - 1));++i;
    *(cache + i) = fmaadd(*(cache + i), *(it - i - 1));++i;
    *(cache + i) = fmaadd(*(cache + i), *(it - i - 1));++i;
    *(cache + i) = fmaadd(*(cache + i), *(it - i - 1));++i;
    *(cache + i) = fmaadd(*(cache + i), *(it - i - 1));++i;
    i = 0;
  }
  fma_10way_finality(cache, (it - 10), end);
  summ = (*(cache + 0) + *(cache + 1) + *(cache + 2) + *(cache + 3) +
	  *(cache + 4) + *(cache + 5) + *(cache + 6) + *(cache + 7) +
	  *(cache + 8) + *(cache + 9));
  return hsumf(summ);
}

Пришлось хреначить финалити, ибо тут «анролл» на 10, а почему на 10 - для максимального throughput"а - надо, чтобы каждый каждый регистр юзался через 5тактов - т.е. 10регистров.

И вся эта порятнка нужна для борьбы с тупостью конпелятора.

Это уже: 214.167252GB/s(раельно там в районе 250 - просто мой бенч говно). 107 гигафлопс на ведро. Из теоретических 144, но тут уже влияние кеша. Причем 50+ из которых выкидываются и просто бесплатные.

Теперь вопрос к пацанам - что нам дадут эти гагфлопсы, когда у нас будет массив не 32килобайта, а 32мегабайта? Зачем нужно выживать максимум, когда скорость памяти отсилы 20-30гигабайт и нам хватит даже С++ кода с ffast-math?

Ну и призываются упомянутые мною пацаны: mv - этот тот експерт, что вещал про «руками переименовывать регистры не надо» и «анрол ваще ненужен», emulek вещал про ненужность счёта тактов, и не понимал что такое «беслпатно», AIv - не понимал в чем проблема плюсов, ck114 - так же не понимал в чем проблема плюсов.

Бенчи: https://gist.github.com/superhackkiller1997/606be26fa158ef75501d - вроде я там ничего не напутал.

P.S. - не выпиливайте пж, пусть пацаны «нужно» или «не нужно». Мне интеерсно. Ну и там рекомендации пацанов.

Carb_blog
()

Blizzard выпустила бесплатно три свои древние игры: The Lost Vikings, Blackthorne и Rock N' Roll Racing

 , ,

Брать здесь.

The Lost Vikings® работают под Wine (только без звука) и, наверное, можно запустить прямо под doxbox - не проверял.

thespiritofbirdie
()

Вещи, изменившие представление о юзабилити

Какие вещи для вас задали высокую планку в представлении о юзабилити тем или иным инструментом бытия?

Например, мне, после клавиатуры Razer BlackWidow 2013 печатать что-либо на клавиатурах знакомых сродни набору текста на планшете.

SailorMoon
()

What I Wish I Knew When Learning Haskell

 

Просто не мог не запостить. IMHO, лучший референс по хаскелу: http://dev.stephendiehl.com/hask/

mix_mix
()

Бег и сжигание жира

 , ,

Доброй ночи всем! В связи с тем, что не могу уже застегнуть две пары своих любимых штанов (жирею!), из-за, в основном, сидячего образа работы, решил восстановить занятия детства - бег, для снижения массы тела и приведения себя в тонус. Подскажите, эффективен ли спокойный бег (5-7 км) по вечерам? Через сколько можно ожидать снижения массы тела? Чем еще можно уменьшить живот? Да, понимаю, что здесь может скрываться плохой обмен веществ, но до относительно сидячей работы, был момент, когда в день проходил очень много километров и масса поддерживалась в норме.

int13h
()

VIM для веб-разработки

 

Ребята, посоветуйте - чего туда добавить, чтобы чувствовать себя удобно. Я еще не осилил, но периодически пытаюсь, плачу, запарываю все по срокам, т.к. начинаю дико тормозить при банальном редактировании файлов, просто по скорости, но пытаюсь.

Я уже больше не могу. Пробовал всякие там IDE (NetBeans, PhpStorm) и т.п. Пробовал «редакторы» (medit, bluefish, geany, sublime). Всё чем-то раздражает, не могу понять почему. Всё мне не так. Подсознательная тяга к сосноле, что ли. Остались две баррикады, видимо: vim и emacs. Emacs меня пугает сам по себе, так что начну с vim'а, серьезно начну, черт возьми.

Чего хотелось бы:

- поддержку проектов
- emmet (бывший zencoding) ((хотя спрашивать нечего, знаю, что он где-то есть, но будут ли проблемы?))
- подсветка парного тега html (наводишь на один div и он показывает, где закрывающий div, очень удобно)
- дерево каталогов слева
- подсветка ошибок PHP, html, css, javascript
- подсказки (а-ля методов класса, тупой хелп и т.п.)
- возможно быстро сменить кодировку файла и открыть файл в другой кодировке
- ваши плагины/модули по вкусу
- интеграция с git
- интеграция с ftp (залить измененное в "одно нажатие")
- возможность разделить экран на две части и открыть таким образом два файла сразу (видеть их и редактировать)
- какой шрифт для консоли рекомендуете? недавно накатил убунту (14.04), там консольный шрифт мне кажется не очень. можно ли поменять шрифт только для vim?

Внушительный список вышел, вроде бы. Крайне долгое время обходился без IDE и, похоже, сильно привык (зря?).

coderage
()

Сайт для домашней странички

 finger, ,

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

http://torvaldsfinger.com/

tazhate
()

Рукодельникам и рукодельщицам: а посоветуйте дрель и паяльную станцию

 ,

Паяльную станцию с феном. Дрель, как не сложно догадаться, для текстолита — глазок к соседям я делать не буду. Заказывать скорее всего буду на ибее, т.ч. желательно, чтобы девайсы там были, причем в позиции buy it now (сказано для тех, кому не лень за меня по ибею полазить ;). Оба устройства желательно в пределах 0-130 долларов.

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

f1xmAn
()

Обмен ключами, скидками и прочими игровыми радостями (2)

 , , ,

Сюда можно и нужно писать, какими бы ключами вы бы хотели поделиться. Steam, desura, всякие бандлы и т.д.

Замечания:

beastie
()

Раздача инета через инет

Доброго времени суток! Вероятно, моя проблема уже решена в какой-нибудь из тем форума, но я не нашёл. В гугле - тоже; похожие проблемы обсасываются, но решения не увидел. Если тема уже была, прошу извинить и ткнуть носом.

Суть. Злые люди поставили на одном РС инет-фильтр. Имеется необходимость помочь этому РС раздачей инета с другого, удалённого, РС. Проблема отягощается тем, что на первом РС нет админа, а злые люди, кроме того, пристально следят за системой. Попытка использовать TOR ничего не дала - ни напрямую, ни через бриджи. Своим нубовским умом я прикинул, что коль скоро вариант с созданием VPN не пройдёт, вполне резонно будет поднять у себя прокси сервер (тем паче, что на стороне клиента не нужно никаких телодвижений, кроме настройки какого-нибудь вторичного браузера на прокси). В общем, прокси я поднял (squid3, на Debian Linux), прописал в его конфиге IP нашего обделённого бедолаги. Разрешил в файерволле доступ с этого IP на порт прокси (3128) и решил, что вроде всё пучком и всё должно работать. Но при попытке соединиться на стороне клиента: «Соединение закрыто удалённым сервером». А в логах Сквайда нет никаких упоминаний о попытке подключиться к нему с удалённого ПК. Для меня, через 127.0.0.1 всё пучком, всё через прокси работает. В чём может быть фэйл? Или фэйл - я сам с моей нубической логикой и отдача инета в инет без VPN невозможна в принципе?

DoubleNoob
()

Очередной выбора тред - мы покупаем велосипед!

 

Вот вот начнется сезон, озадачился выбором железного коня.

Кататься буду в основном по городу, но так же и по пересеченной местности. Потому, как мне кажется, подойдет mtb гибрид.

Присмотрел данный аппарат: Giant Roam 1 Disc (2013) http://market.yandex.ru/model.xml?modelid=8493949&hid=91529

Что собственно требуется. Чтобы откатался как минимум 3 сезона без постоянных подкручиваний/настраиваний/смазываний. Под этим подразумевается плановые и профилактические ТО, а не постоянные каждую неделю. Есть дешевый стелс навигатор - разваливается после одного сезона.

Тормоза, само собой, дисковые, желательно гидравлические.

Вилка пружинно-масляная, трансмиссия приличного уровня.

Резина не широкая, вес не запредельный, обода усиленные.

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

roman77
()