IT. Сети. Связь

Подписаться на эту рубрику по RSS

Here is how you can find all files newer than a certain date, excluding directories from the search ("doc" and "misc", in my case) and printing the modified time along with the file name.

find -L . -newermt "Dec 5, 2015 22:00" -not -path './doc/*' -not -path './misc/*' -printf "%TY-%Tm-%Td %TH:%TM:%TS %Tz %p\n"  | less

This oneliner will also follow symlinks (thanks to -L option).

Как вытащить картинки из MS Word

Метки:
Дата: 15/12/2014 17:07:14

Часто требуется вытащить картинки из документа MS Word (форматы «.doc» или «.docx»). Распространенные решения этой задачи это copy-paste картинок из одной программы в другую или сохранение файла как «.html».

Я покажу третий, оригинальный, способ, который, надеюсь, придётся вам по душе.
  
1. Сохраняем исходный документ как документ формата Microsoft Word 2007, т.е. «.docx». Если исходный документ уже имет расширение «.docx» — пропускаем этот шаг.
 
 
читать дальше »

Есть такая распространенная задача в Git — выделение некоторой (суб)директории в отдельный проект, т.е. в новый репозиторий.

При этом вы можете оставить папку в старом проекте, добавить её в .gitignore и работать с ней как с отдельным репозиторием (альтернатива git submodules), либо полностью удалить её из старого проекта.

В последних версиях Git это тривиальные задачи. Я опишу первый вариант.

 

1. Заходим в директорию, находящуюся под версионным контролем и выполняем команду:

git subtree split -P <path-to-folder> -b <name-of-new-branch>

Этим мы отделяем нужную директорию со всей историей её изменений в новую ветку <name-of-new-branch> . Обратите внимание, что <path-to-folder> не должен начинаться или оканчиваться какими-либо специальными символами вроде «/» или «.».

К примеру если наш репозиторий лежит в «D:\projects\my-project» и мы желаем отделить папку «D:\projects\my-project\modules\my-module», то пишем так:

cd D://projects/my-project
git subtree split -P modules/my-module -b my-module-branch

Новая ветка будет «висеть» отдельно, взгляните на пример реального проекта:

 

 

2. Создадим новый репозиторий

читать дальше »

Коммиты в Git можно объединять в один несколькими способами (git rebase -i , git merge --squash ) и они неплохо работают, если вам нужно объединить ревизии где-то из середины ветки.

Если всё, что требуется, это объединенить последние N коммитов, есть другой, изящный способ. Например для последних 3-х коммитов:

git reset --soft HEAD~3
git commit

Пишите новый текст коммита и всё!

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

Введите в поисковую строку "погода в"…

 

 

Или "1 рубль в" или "какая сейчас луна", или "ударение в слове" и т. п. Мало того, что очень красиво выглядит с погодой, так еще можете найти то, чего хотели, но не знали как сформулировать. И я думаю дальше — больше.

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

Если вы живете не по нулевому гринвичевскому меридиану, например в России, то ваше локальное время сдвинуто относительно всемирного координированного времени UTC. Например для Москвы это +4 часа, на момент написания этой заметки. Если время по UTC, допустим, 12:00 дня, то по Москве (MSK) это уже 16:00.

 

 

Но при наличии двух операционных систем, Windows и Linux, на одной машине часто возникают непонятные скачки времени. В обоих системах начальной точкой отсчета считается время, заданное в BIOS. Однако, если Linux считает, что время BIOS хранится в UTC зоне, то Windows полагает, что это локальное время, т.е. если даже вы задали в Windows часовой пояс +4, время будет выводится такое, какое сейчас настроено в BIOS.

читать дальше »

It would seem there is no problem to find all symbolic links within the directory recursively like find . -type l . This is exactly how I hoped to make it, but got not the result I expected.

Actually, this way we don't get those symbolic links that are located within the directories which, in its turn, are pointed by the symbolic links that are found in the directory of initial search. It is complicated enough, but I think you see the issue :)

So this is how to solve it:

1. You can use ls recursively and so that this command will follow all the symbolic links found and search new links there.

ls -lR . | grep ^l

2. Another way is to take advantage of find command, but note, firstly, there must be -l option which will allow us to follow symbolic links already found, and secondly, pay attention that I use -xtype instead of -type. This is due to the fact that:

l    symbolic link; this is never true if the -L option or the
     -follow option is in effect, unless the symbolic link  is
     broken.  If you want to search for symbolic links when -L
     is in effect, use -xtype.

(from man find )

Thus, the second solution:

find -L . -xtype l