Записки разработчика

06.02.2016

Как узнать какому пакету может принадлежать файл

Ставил я тут давеча игрулю Caesaria, но вот незадача — компиляция вывалилась с ошибкой:

In file included from /home/user/games/caesaria/dep/sdl2mini/src/video/SDL_video.c:34:0:
/home/user/games/caesaria/dep/sdl2mini/include/SDL_syswm.h:72:22: fatal error: X11/Xlib.h: Нет такого файла или каталога
 #include 
                      ^
compilation terminated.
make[2]: *** [dep/sdl2mini/CMakeFiles/sdl2mini.dir/src/video/SDL_video.c.o] Ошибка 1
make[1]: *** [dep/sdl2mini/CMakeFiles/sdl2mini.dir/all] Ошибка 2
make: *** [all] Ошибка 2

Видим что требует файл: Xlib.h

Чтобы найти какому пакету он может принадлежать, ставим программу:

sudo apt-get install apt-file

Обновляем кеш:

apt-file update

и делаем запрос:

apt-file search Xlib.h

Получаем ответ:

user@orion-xubuntu:~/games/caesaria$ apt-file search Xlib.h
castle-game-engine-doc: /usr/share/doc/castle-game-engine-doc/html/CastleXlib.html
emscripten: /usr/share/emscripten/system/include/X11/Xlib.h
ivtools-dev: /usr/include/IV-X11/Xlib.h
libghc-x11-dev: /usr/lib/haskell-packages/ghc/lib/X11-1.6.1.1/ghc-7.6.3/Graphics/X11/Xlib.hi
libghc-x11-dev: /usr/lib/haskell-packages/ghc/lib/X11-1.6.1.1/ghc-7.6.3/include/HsXlib.h
libghc-x11-doc: /usr/share/doc/libghc-x11-doc/html/Graphics-X11-Xlib.html
libghc-x11-doc: /usr/share/doc/libghc-x11-doc/html/mini_Graphics-X11-Xlib.html
libghc-x11-doc: /usr/share/doc/libghc-x11-doc/html/src/Graphics-X11-Xlib.html
libhugs-x11-bundled: /usr/lib/hugs/packages/X11/Graphics/X11/Xlib.hs
libroot-core5.34: /usr/lib/i386-linux-gnu/root5.34/cint/include/X11/Xlib.h
libx11-dev: /usr/include/X11/Xlib.h
perl-tk: /usr/lib/perl5/Tk/pTk/Xlib.h
tendra: /usr/lib/TenDRA/lib/include/x5/lib.api/X11/Xlib.h
xemacs21-bin: /usr/lib/xemacs-21.4.22/i686-linux-gnu/include/extw-Xlib.h
z88dk-data: /usr/share/z88dk/include/x11/Xlib.h

Обычно для компиляции требуются пакеты с -dev оконачанием. Точное соответствие у пакета libx11-dev.

sudo apt-get install libx11-dev

И продолжаем компилировать.

PS: Оно-таки скомпилилось, правда пришлось ещё кучу пакетов поставить. Если кому интересно — игра вот: Caesaria

Caesaria

admin @ 23:50


01.02.2016

Старый добрый ламповый терминал

Добро тут: Cool old term

Любители электронных ламп и катодных мониторов, ловите сие программерское произвидение искусства cool-old-term! Собрать достаточно просто — ставим зависимости (на гитхабе всё расписано, под какой дистрибутив что ставить), клонируем реп из Github к себе на машину, собираем и запускаем! Куча настроек, думаю каждый сделает родною консоль немного приятней. Несколько скринов:

687474703a2f2f692e696d6775722e636f6d2f4c78306163517a2e6a7067

687474703a2f2f692e696d6775722e636f6d2f493677713163432e706e67

687474703a2f2f692e696d6775722e636f6d2f313245716c704c2e706e67


Снимок экрана от 2016-02-01 12:36:12

Снимок экрана от 2016-02-01 12:37:06

admin @ 14:49


Выставить 777 на папки и подпапки в текущей директории

Чтобы выставить права только на вложенные директории, выполним следдующую команду в консоли:

chmod -R 777 $(find . -type d)
admin @ 11:45


30.01.2016

Работа с git

Если с Mercurial я более менее привык работать, то вынужденные встречи по работе с git повергали меня в уныние. Здесь я немного опишу свой опыт и оставлю шпаргалки, которые составил для себя в процессе изучения/использования.

Сразу скажу, что пользуюсь сервисом репозитариев BitBucket. Он нравится мне тем, что там можно создавать приватные репозитарии — а так как проекты в основном коммерческие, то эта возможность как нельзя кстати.

В общем, схема работы у меня такая.

1. Создать репозитарий на BitBacket.
2. Выполнить команды :

mkdir /path/to/your/project
cd /path/to/your/project
git init
git remote add origin git@bitbucket.org:username/project-name.git

Где username — ваше имя пользователя, project-name — название проекта на сервере репов. В принципе эти команды я скопировал с BitBacket — он приводит эти команды для начала работы.

3. Если вы не настраивали конфигурационные данные, настроим:

git config --global user.name "Dmitriy"
git config --global user.email mail@mailserver.ru

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

4. Настроим .gitignore

Этот файл говорит git-у, что полезет в него, а что — нет. Допустим у нас в проекте есть папки с блобами. Пишу в этом файле такую строку:

blobs/

5. Добавим файлы проекта:

git add .

6. Ветки master до первого коммита у нас нет — поэтому сделаем коммит:

git commit -a -m "init"

Здесь ключ m и строка в кавычках даёт название коммиту.

7. Теперь всё нужно отправить в репозитарий:

git push origin master

В этом месте может возникнуть ошибка:

login@server:~/public_html$ git push origin master
Counting objects: 2265, done.
Delta compression using up to 40 threads.
fatal: unable to create thread: Resource temporarily unavailable
error: failed to push some refs to 'git@bitbucket.org:username/project-name.git'

Небольшой гуглинг привел меня на StackOverflow, выполним рекомендации:

login@server:~/public_html$ git config --global pack.windowMemory "100m"
login@server:~/public_html$ git config --global pack.SizeLimit "100m"
login@server:~/public_html$ git config --global pack.threads "1"

после этих настроек всё отлично запушилось.

В следующей части расскажу о ветках и зачем они нужны.

admin @ 02:13


29.01.2016

как в Linux узнать размер директорий первого уровня

Чтобы узнать сколько места занимают директории, вместе с поддиректориями, в текущей директории введите:

find . -maxdepth 1 -type d -exec du -hs {} \;
admin @ 22:51


23.05.2015

Глюк с курсором в редакторе sublime text 2

Недавно пересел на Calculate Linux, система понравилась, но вот незадача — в редакторе Sublime Text 2 появилсь проблема: в какой-то момент курсор залипает, остается на месте и не двигается, причем такое впечатление что невидимый курсор двигается и при нажатии клавиш — выводит текст. Версия: 2.0.2, build 2221. И происходит это часто. Честно скажу что пока глюк не поборол, но нашел как с ним бороться.

Конечно этот способ больше подойдет любителям редактора всех времен и народов Vi. У sublime есть режим Vintage (режим урезанного Vi-редактора).

Включить его просто: Preferences -> Settings — Default, далее найти настройку:

"ignored_packages": ["Vintage"]

и заменить её на

"ignored_packages": []

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

admin @ 16:50


22.05.2015

использовать классы Битрикс без подключения дизайна

Чтобы использовать классы CMS битрикс, без подключения дизайна, в начале файла вставьте этот код:

require_once($_SERVER['DOCUMENT_ROOT'] . "/bitrix/modules/main/include/prolog_before.php");
admin @ 11:27


21.05.2015

json_encode не работает

Сегодня столкнулся когда пытался понять, почему ajax-запрос не получает ответ, вернее получает, но он пустой. По факту что получилось:

была использована функция:

echo json_encode( $response , JSON_UNESCAPED_UNICODE );

аттрибут JSON_UNESCAPED_UNICODE — очень полезный, позволяет корректно работать с utf-8 строками через json. И в этом крылась проблема))

Оказывается, аттрибут JSON_UNESCAPED_UNICODE был добавлен только в php 5.4
у меня же, по факту, на серваке стоял 5.39.4

Пришлось действовать по старинке:

echo $response;

Все приятного кодинга, и не слишком геморного дебага!

admin @ 20:29


19.05.2015

настройка горячих клавиш редактора Sublime Text 2

Сегодня поговорим о горячих клавишах редактора Sublime.

Редактор очень нравится, радует что он есть под все системы, радует что плагины можно на Python писать. Но пока не до плагинов, сегодня я столкнулся с небольшой проблемой — нужно было переконверировать большое количество файлов из cp1251 в utf-8. Сначала делал руками: открываю файл- вижу кодировка сломана — Reopen with encoding — Save with encoding. И так каждый файл. Сразу надоело, захотелось это делать чуть быстрее — хотя бы не лазить мышкой в меню File каждый раз.

Решил посмотреть какие горячие клавиши отвечают за «reopen with encoding» и за «save with encoding»: Preferences -> Key Bindings — Default

Но, к сожалению, там ничего подобного не нашел. И тут нам на помощь приходит логгер команд.
Для начала, вызовим консоль: Ctrl-~ или View -> Show Console

Набираем руками или копируем отсюда команду: sublime.log_commands(True)

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

Открыли файл: Вместо cp1251 отображаются кракозябры. Выполняем File -> Reopen with encoding файл перекодируется, смотрим что нам консоль показала:

command: reopen {"encoding": "Cyrillic (Windows 1251)"}

При сохранении с кодировкой:

command: save {"encoding": "utf-8"}

Добавим это в конфиг (горячие клашиви можете поменять): Preferences -> Key Bindings — User

[
	{ "keys": ["ctrl+alt+w"], "command": "reopen", "args": {"encoding": "Cyrillic (Windows 1251)" } },
	{ "keys": ["ctrl+alt+s"], "command": "save", "args": {"encoding": "utf-8" } }
]

А вообще открытие Windows-1251 с кракозябрами зависит от этой настройки (Preferences -> Settings — Default)

"fallback_encoding": "Western (Windows 1252)",

Чтобы кракозябры не появлялись — можно поменять на:

"fallback_encoding": "Cyrillic (Windows 1251)",
admin @ 23:25


26.03.2015

ssh настроить чтобы не выкидывало по таймауту

При работе с ssh есть одна проблема — когда на минуту другую отвлекся от терминала — соединение разрывается. Решается просто:

touch ~/.ssh/config

добавляем в этот файл строку:

ServerAliveInterval 5
admin @ 19:36


« Newer PostsOlder Posts »
 

Powered by WordPress