LINUX.ORG.RU

Сообщения andreyu

 

Vim и плагин Airline

Очень давно использую VIM с плагином Airline. Но пару месяцев назад что-то сломалось в нем сломалось. Допускаю, что могла случиться некая коллизия с другими плагинами.

Суть проблемы: периодически отваливается отображение информации в статусбаре (сбрасывается на дефолтный статусбар). Иногда это происходит при перемещении курсора, но чаще при переключении буфера.

Пробовал делать такой костыль:

au VimEnter,WinEnter,BufWinEnter,BufEnter,QuickFixCmdPost,InsertLeave * AirlineRefresh

Но он не решил проблему. Переключаюсь на какой-либо буфер, airline отваливается, выполняю команду :AirlineRefresh - airline корректно обновляет статусбар. Снова переключаю буфер или просто перемещаю курсор - опять дефолтный статусбар.

При этом видно, что airline отобразил корректно информацию в статусбаре и тут же вернулся дефолтный статусбар.

К сожалению мне так и не удалось установить момент, когда возникает эта проблема. Запустил VIM - все прекрасно. Поработал какое-то время - отвалился airline.

 , ,

andreyu
()

Worms Zone - Червячная зона v1.0.4

Обновил Worms Zone для Linux x86_64 до версии 1.0.4. Сорцы движка, игры и прочих модулей закрыты. В ближайшее время открывать не планирую. Принципиальным любителям открытых сорцов предлагаю воздержаться от использования этой игры.

Краткое описание

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

Скриншоты

Особенности

  • В игре доступен большой выбор готовых скинов.
  • Есть редактор скинов.
  • Можно настроить внешний вид мордочки.
  • Таблица лидеров за сутки и за неделю.
  • На арене может быть до 150 червей.
  • В линуксовой версии нет поддержки логина в Facebook, поэтому профиль хранится локально, а скор в лидерборд не отправляется.

Изменения относительно предыдущей версии

  • Исправления багов в игре, обновлен движок.
  • Обновлен и частично переработан UI.
  • Добавлены внутриигровые задания.
  • Добавлены новые скины и морды.
  • Теперь есть возможность «очистить» морду червяка.
  • Добавлены новые фоны.
  • Добавлен новый плоский вид «ништяков».
  • Предпринята очередная попытка улучшения геймплея.

Ссылки

 , , , , zone

andreyu
()

Simple Viewer GL v3.1.0 — просмотрщик изображений

Simple Viewer GL — легковесный просмотрщик изображений.

Краткое описание

Интерфейс состоит из одного окна с опциональной строкой статуса и информацией о пикселе под курсором и/или выделенной области (скриншот). Simple Viewer GL умеет определять тип файла по его сигнатуре (параметр -a), а не только по расширению файла. Поддерживается рекурсивный обход директории (параметр -r).

Поддерживаемые форматы

PNG, JPEG, JPEG 2000, PSD, AI, EPS, XCF (GIMP image format), GIF, SVG, TIFF, TARGA, ICO, ICNS (Apple Icon Image), BMP, PNM, DDS, XWD, SCR (ZX-Spectrum screen), XPM, WebP, OpenEXR.

Работает в GNU/Linux, FreeBSD и macOS.

Новое в 3.1.0

  • Добавлена поддержка формата SVG.
  • Переработана поддержка XCF (GIMP image format).
  • Исправлена ошибка загрузки DDS/DXT5.
  • Фиксы связанные с WebP и LCMS2.
  • Улучшено определение формата JPEG.
  • Улучшена обработка ошибок TIFF.
  • Исправлены ошибки, найденные участниками данной ветки.

Где взять?

Проект Simple Viewer GL доступен на BitBucket.

Как я использую вьювер

  1. Жму enter в midnight commander на заинтересовавшем меня файле. С помощью мышки выбираю нужную мне область изображения, что бы определить ее характеристики (позиция/разме спрайта в атласе, определения origin/hotspot спрайта, определение цвета пикселя).

  2. В консоли sviewgl . -r для рекурсивного просмотра всех изображений в директории. Иногда использую параметр -a для определения формата по содержимому файла.

  3. Помечаю с помощью кнопки del файлы для удаления. После чего жму ctrl+del и помеченный файлы удаляются.

 , ,

andreyu
()

Правило в Makefile

В Makefile есть несколько подобных правил - rule_0, rule_1, rule_2:

rule_0:
   cp file_0 rule_0_path/
   mv file_1 rule_0_path/
   touch rule_0_path/file_2

rule_1:
   cp file_0 rule_1_path/
   mv file_1 rule_1_path/
   touch rule_1_path/file_2

rule_2:
   cp file_0 rule_2_path/
   mv file_1 rule_2_path/
   touch rule_2_path/file_2

Как видно, отличаются они незначительно. Есть ли возможность избавиться от копипаста?

Хочется что-то подобное такому:

base_rule:
   cp file_0 $(arg)_path/
   mv file_1 $(arg)_path/
   touch $(arg)_path/file_2

rule_0:
   base_rule(rule_0)

rule_1:
   base_rule(rule_1)

rule_2:
   base_rule(rule_2)

 makefile bash

andreyu
()

Worms Zone - Червячная зона

Собрал версию Worms Zone для Linux x86_64. Сорцы движка, игры и прочих модулей закрыты. В ближайшее время открывать не планирую. Принципиальным любителям открытых сорцов предлагаю воздержаться от использования этой игры.

Краткое описание

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

Скриншоты

Особенности

  • В игре доступны большой выбор готовых скинов.
  • Есть редактор скинов.
  • Можно настроить внешний вид мордочки.
  • Таблица лидеров за сутки и за неделю.
  • Огромная арена, увеличено количество червей на арене до 150.

В линуксовой версии нет поддержки логина в Facebook, поэтому профиль хранится локально, а скор в лидерборд не отправляется.
Если пойму, что к линуксовой версии есть интерес, то постараюсь добавить Facebook Login.

Ссылки

 , , ,

andreyu
()

Ranged for vs Indexed for

Что в должно быть быстрее на arm для контейнера std::vector<T>?

Ranged for:

std::vector<SomeStruct> vec;
for (const auto& v : vec)
{
  // do something with v
}


Indexed for:
std::vector<SomeStruct> vec;
for (size_t i = 0, size = vec.size(); i < size; i++)
{
  const auto& v = vec[i];
  // do something with v
}


Мои синтетические замеры дают приблизительно одинаковые результаты. Профилирование под xcode показывает странные результаты - indexed for получается иногда сильно быстрее, чем range for.
Самостоятельно выводы сделать не получается, надеюсь на коллективный разум ЛОРа.

 

andreyu
()

Simple Viewer GL v2.99 — просмотрщик изображений

Simple Viewer GL — легковесный просмотрщик изображений.

Интерфейс состоит из одного окна с опциональной строкой статуса и информацией о пикселе под курсором и/или выделенной области (скриншот). Simple Viewer GL умеет определять тип файла по его сигнатуре, а не только по расширению, а также рекурсивно сканировать директорию.

Список поддерживаемых форматов:
PNG, JPEG, PSD, AI, EPS, GIF, TIFF, TARGA, ICO, PNM, DDS, BMP, XWD, SCR (ZX-Spectrum screen), XPM, WebP, OpenEXR.

Работает в GNU/Linux, FreeBSD и macOS.


Новое в 2.99:

  • Добавлена поддержка формата OpenEXR.
  • Добавлена поддержка форматов ZX-Spectrum multicolor + border.
  • Уменьшено потребление памяти при загрузке PNG.
  • Расширена поддержка GIF.
  • Добавлена поддержка CMYK PSD.
  • Добавлена поддержка CMYK JPEG.
  • Улучшена поддержка TARGA RGB 16.
  • Добавлена возможность предпросмотра форматов Adobe Illustrator и Adobe EPS.
  • Введена возможность «укорачивания» длинных имен файлов в инфобаре (длина настраивается в конфиге).
  • Теперь вьювер собирается и работает на FreeBSD.
  • Улучшен детектор JPEG формата.
  • В конфиг добавлен параметр «font_ratio».
  • Добавлены правила сборки DEB и RPM.
  • Добавлена поддержка форматов ZX-Spectrum multicolor + border.
  • В macOS конфиг перенесен в «~/Library/Application Support/sviewgl/config»
  • Теперь клавиша <Delete> не удаляет файл, а помечает его для удаления. Для удаления с диска помеченных файлов добавлена комбинация <Ctrl+Delete>.
  • Добавлен хоткей <Shift+?>.
  • Улучшен попап Pixel Info.
  • Починил запуск в полноэкранном режиме.
  • Сделал «ленивую» инициализацию загрузчиков.
  • Добавлена пиксельная сетка и хоткей <g> для нее.
  • Исправлен режим фильтрации текстур.
  • Добрый художник-альтруист нарисовал новую иконку.



Simple Viewer GL на BitBucket.

Бинарная сборка для macOS в разделе downloads.

 , ,

andreyu
()

Современные погроммисты

Использование терминала при разработке под Андроид - https://habrahabr.ru/post/336348/

Маякните, когда появится статья «использование клавиатуры при программировании».

 , ,

andreyu
()

Windows Defender

Корпорация Microsoft в оперативном режиме исправила уязвимость в коде встроенного антивируса ОС Windows.

На исправление ушло 3 дня. Но уязвимости подвержено все семейство (хз, сколько лет этой дыре).

Эксплоит CVE-2017-0290. Злоумышленнику достаточно отправить e-mail или IM-сообщение, которое будет проверено Windows Defender.

Корпорация, говорили они. Надежная ОС, говорили они. Профессиональные программисты, говорили они. Серьезный подход к тестированию, говорили они.

 ,

andreyu
()

Midnight Comander skin override

В файл ~/.config/mc/filehighlight.ini (Command -> Edit highlighting group file) мною добавлена новая группа, где прописаны нужные расширения файла. Теперь хочется задать свой цвет для этой группы, не меняя описание скина и не создавая форк этого скина.

Пробовал добавить секцию [filehighlight] в ~/.config/mc/ini, но не помогло.

 

andreyu
()

Simple Viewer GL - вьювер изображений

Когда-то давно я не смог найти для себя вьювер, который удовлетворял моим требованиям. Посему был написан свой вьювер - simple viewer, базирующийся на GFL SDK (используется в xnview).

Через некоторое время я решил отказаться от GFL SDK в пользу открытых библиотек (libjpeg, libtiff, giflib, libpng, etc.) и перешел на OpenGL. Так 8 лет назад родился Simple Viewer GL: https://bitbucket.org/andreyu/simple-viewer-gl

Картинка для привлечения внимания: https://bitbucket.org/repo/XgobE8/images/1203610096-simpleviewergl.png

Поддерживается все, что умеет ImLib2 (BMP, TARGA, куча прочих форматов), а так же:

  • PNG (libpng),
  • JPEG (libjpeg),
  • TIFF (libtiff),
  • GIF (giflib),
  • PPM (частичная поддержка),
  • DDS (частично),
  • PSD (формат до конца не отреверсили, посему не все фичи поддерживаются),
  • ICO (png и «обычные» фреймы),
  • XWD (только x11, за реализацию x10 даже не брался),
  • SCR (ZX-Spectrum screen),
  • PVR, RAW, AGE (это внутренние форматы).

Интерфейс - одно окно с опциональной строкой статуса и информацией о пикселе/селекшене под курсором.
Вьювер умеет определять тип файла по его сигнатуре, а не только по расширению.
Умеет рекурсивно сканировать директорию.

Работает под Linux и macOS. Вместо мертвого freeglut используется glfw3.

Сегодня собрался с силами и смержился с development.
Постараюсь ответить на все ваши вопросы по вьюверу.

Перемещено beastie из talks

 , ,

andreyu
()

Удаленная новость о homebrew

www.linux.org.ru/forum/talks/12888666 - каком месте это личная переписка и жж?

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

 удаление новости

andreyu
()

Калькулятор

Признавайтесь, чей калькулятор?
https://github.com/AceLewis/my_first_calculator.py/blob/master/my_first_calcu...

 , ,

andreyu
()

NeoVim + Neomake

Пытаюсь заменить Syntastic на Neomake. Пользователи последнего, говорят, что это сделать легко и просто.

Но я не осилил настройку для c/c++.

1. У меня чек происходит только по :Neomake (не важно, руками я это сделал или повесил на событие).

2. Проверяемый файл должен быть предварительно сохранен на диск.

3. Если в файле есть инклюд, путь к которому задан относительно проекта, а не относительно текущего файла, то проверка поломается на нем.

В случае Syntastic и vim такой проблемы нет. Возможно это из-за того, что я использую его совместно с YCM.

 , ,

andreyu
()

Почему std::make_pair()/std::forward() так себя ведет

$cat test.h
#pragma once

#include <utility>

class Test
{
public:
    typedef std::pair<unsigned, void*> MyPair;
    MyPair foo();

    static const unsigned Invalid = (unsigned)-1;
};



$ cat test.cpp
#include "test.h"
#include <cstdio>

Test::MyPair Test::foo()
{
    // that's worked in c++11
    // const unsigned var = Invalid;
    // return std::make_pair(var, nullptr);

    // that's worked in c++11 too
    // return std::make_pair((unsigned)Invalid, nullptr);

    return std::make_pair(Invalid, nullptr);
}

int main(int argc, const char* argv[])
{
    Test test;
    Test::MyPair pair = test.foo();
    printf("first: %u, second: %p\n", pair.first, pair.second);

    return 0;
}


$ g++ test.cpp
$ ./a.out
first: 4294967295, second: 0x0


$ g++ -std=c++11 test.cpp
Undefined symbols for architecture x86_64:
  "Test::Invalid", referenced from:
      Test::foo() in t-f9f766.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)


Ткните носом в стандарт, где поясняется почему std::forward() не должен видеть статический мембер?

 

andreyu
()

Пинцеты

Ищу замену своим старинным медицинским пинцетам (уже лет 25 их в хвост и гриву использую) - один еще совковский, а второй германский. Оба пинцета прямые и толстые - для smd не очень подходят.

Хочется goot ts15, но у нас в городе их нет.

Присмотрел такие наборы на али:

http://ru.aliexpress.com/item/10pcs-set-Precision-High-hardness-Tweezers-tool...

http://ru.aliexpress.com/item/6pcs-Professional-ESD-Anti-Static-Stainless-Ste...

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

Что скажете?

p.s. Линукс тут при том, что я красноглазый гентушник.

 , , ,

andreyu
()

USB микроскоп

Хочу приобрести детям (чего скрывать и для себя тоже) микроскоп. Смотрю в сторону такой штуки:
http://ru.aliexpress.com/item/Practical-New-2MP-USB-8-LED-Digital-Microscope-...

По обзорам весьма приличная игрушка, для осмотра и пайки smd вполне годится. Но не знаю, как usb-микроскопы (это же обычные usb-камеры?) работают под линуксом?
Что посоветует всезнающий ЛОР?

 , ,

andreyu
()

Youtube + Google Apps

Неделю назад Ютуб пришел в Беларусь. И теперь он работает с аккаунтами Google Apps, но по умолчанию сервис выключен.

Теперь можно отказаться о fallback адреса в gmail.com в пользу адреса в своем домене.

 ,

andreyu
()

Deadbeef for Android

Новая версия «родного» Play Music в нехусе утомила меня окончательно - не видит ни одного трека загруженного с помощью adb push в Music директорию.

Установил deadbeef из маркета. При первом старте он предложил установить плагин, который был успешно установлен. Но mp3 треков плеер не видит, а при перезапуске предлагает снова установить этот плагин.

Как доказать плееру, что плагин уже установлен?

Кастую waker как автора сего плеера.

 ,

andreyu
()

Vim: автоматическое добавление заголовка у нового файла

Хочу немного автоматизировать процесс добавления заголовка к новому файлу.
Сейчас я с помощью пальцев рук и UltiSnips добавляю заголовок.

Можно поставить хук на BufNewFile и загружать заранее заготовленный заголовок из файла. Но возникает вопрос, как вставить текущую дату в этом заголовке.

Вероятно можно с помощью complete() уговорить вим вставить сниппет. Прямой команды UltiSnips я не нашел, а автоматизация complete() у меня получается.

Может гуру вим уже решили данную задачу?

 ,

andreyu
()

RSS подписка на новые темы