Category: it

Category was added automatically. Read all entries about "it".

Как я перенёс фотоархив с работы домой

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

С некоторым усилием я развернул дома FTP-cервер, примечательно, что я использовал сервер, встроенный в Windows 7. С нетбука под Убунту на работе через офисный wifi я смог приконнектиться и даже скопировать файлик командой cp. Но мне надо было копировать много файлов и папок. Из рассмотренных программ:

- gFTP работает нормально, но спотыкается об уже существующие файлы и папки
- Double Commander неправильно отображает имена папок на удалённой стороне,и самое главное, после потери соединения не может переподключиться и его приходится перезапускать, а запускается он только из командной строки, в меню он не добавился.
- Midnight Commander вообще не работает, или я чего-то не понял. На вид полное убожество, разбираться желания не возникло.

В общем, я прикинул так и этак, и сам написал программку для копировния на Ruby. Собственно, это первый осмысленный код, что я написал на Руби. Программка умеет копировать файлы по FTP, перебирая вложенные папки и копируя их структуру. Уже существующие файлы и папки пропускаются (достаточно совпадения имени).

в файле copy_ftp_f.rb

require 'net/ftp'
class FTPConn < Net::FTP
def initialize
@ftpc=Net::FTP.new('xxx.xxx.xxx.xxx') #IP-адрес
@ftpc.login('username','password')
end
def ftpConn
@ftpc
end
def closeFtpConn
@ftpc.close
end
end

class CopyFTP
def initialize(pftp, pfrom, pto)
@s1,@s2=pfrom,pto
#puts '@s1='+@s1
#puts '@s2='+@s2
#puts '@s2(Basename)='+File.basename(@s2)
@ftp=pftp
end

def copyFolder
#puts @ftp.nlst()
@fi=@ftp.nlst()
if @fi.index(File.basename(@s2))
puts 'FTP: trying to enter directory '+@s2
fff=@ftp.chdir(File.basename(@s2))
puts 'Directory '+@s2+ ' exists.'
else
@ftp.mkdir(File.basename(@s2))
puts 'Directory '+@s2+ ' created.'
@ftp.chdir(File.basename(@s2))
end

@fi=@ftp.nlst()
#puts @fi
Dir.glob(@s1+'/*') do |x|
if File.file?(x)
print 'Copy file '+File.basename(x)+'...'
if not @fi.index(File.basename(x))
@ftp.putbinaryfile(x)
puts 'copied'
else
puts 'already exists!'
end
else
puts 'Entering directory '+x
z=CopyFTP.new(@ftp, @s1+'/'+File.basename(x), @s2+'/'+File.basename(x))
z.copyFolder
end
end
@ftp.chdir('..')
end
end


в файле copy_home.rb


require './copy_ftp_f.rb'
f=FTPConn.new
fc=f.ftpConn
p=CopyFTP.new(fc, ARGV[0],ARGV[1])
p.copyFolder
f.closeFtpConn


Для запуска из командной строки

ruby copy_home.rb /home/maximko/from_folder to_folder

Работает нормально.

Как я начинаю понимать, если под Линуксом хочешь пользоваться нормальным софтом - пиши его сам! Тут вам не винда, где всё просто работает с самого начала, тут вам свобода, то есть ничего готового нет и об любую задачу надо сломать себе мозг.

Вакансия разработчика PL/SQL

Если кому-нибудь вдруг интересно: есть вакансия разработчика Oracle PL/SQL в Москве. Зарплата примерно 90 тыщ. Потрясающих познаний не требуется, среднего уровня достаточно. Нормальный коллектив, особо не наседают, работать комфортно. Пресня, Центр Международной торговли, метро "Ул. 1905 года" или "Выставочная", недалеко платформа "Тестовская". С парковкой сложнее.

Хитрости PL/SQL Developer или Как мы купили мультиварку

Начнём с мультиварки.



Пару недель назад мы приобрели девайс, такой же, как на картинке, Redmond RMC-01. Специально выбрали маленькую модель, всего два литра. Пользуемся каждый день, варим кашу для малыша, для себя суп, рис и компот, пару раз испекли бисквит. По-моему, весьма удобно, тем более, что стоит эта машинка меньше двух тысяч. Не надо заботиться ни о пригорании, ни о том, что суп/каша сбежит, не надо мыть плиту, пар при готовке не валит, вытяжку можно не включать. Чаша съёмная, хорошо отмывается в посудомойке. К мультиварке прилагается книга из 160 рецептов, пока что все опробованные рецепты оказались вполне рабочими.

Прочёл вот эту статью на Хабрахабре, со статьёй я в целом согласен, однако самое интересное там в комментариях. Есть такой "синдром посудомоечной машины", вы все знаете, что стоит произнести слово "посудомойка", и у некоторых слушателей тут же разыгрывается неиллюзорный баттхёрт и они начинают яростно утверждать, что им гораздо легче и удобнее мыть посуду руками, хотя никто особо не спрашивает. Так вот в каментах под мультиваркой всё то же самое, только пуканы возгораются ещё жарче. Тут же обнаружились любители стоять у плиты и помешивать кашу, типа так гораздо проще. Каждый второй почему-то норовит упомянуть, что умеет готовить плов гораздо лучше любой мультиварки, хотя про плов вообще речи не было. Мультиварка - это просто кастрюлька с приделанной к ней конфоркой, никаких чудес в ней нет. А плов, если уж так посмотреть - это такое "авторское" блюдо, которое каждый готовит по-своему, в нём не найти усреднённого, подходящего всем рецепта. Ясное дело, что мультиварка не сможет отразить ваш богатый внутренний мир, однако с варкой всяких утилитарных каш, супчиков и компотов она прекрасно справляется. В большинстве повседневных случаев остаточно накидать продуктов, налить воды и нажать несколько кнопок, дальше о готовке можно забыть до сигнала. Практически тот самый "горшочек, вари" о котором мы когда-то читали в сказках, только с защитой от переполнения. Как верно заметил кто-то в комментариях, "даже если выпустят ковёр-самолёт или скатерть-самобранку, их будут покупать далеко не все".

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

Тут мне ещё пришло в голову, что следовало бы чаще читать Хабр, ведь так я смогу отслеживать все технические новинки и гаджеты, буду в курсе всех современных течений и сумею держаться на самом острие прогресса. Прочитал с десяток постов, и понял, что я ничего не понял. И не то, чтобы мне что-то было неясно в деталях - я даже не смог разобрать, о чём идет речь. Короче, я лошара стопроцентный.

Теперь настало время рассказать о некоторых любопытных мелочах в PL/SQL Developer. Уверен, что вы все часто используете PL/SQL Developer как в работе, так и в повседневной жизни. У меня стоит версия 10.0.5.1710. Мини-опрос разработчиков нашего отдела показал, что об этих возможностях никто не знает.

1. Создание пользовательских папок. В дереве объектов, там где в отдельных веточках перечислены пакеты, таблицы, вьюшки и всё остальное, можно создавать пользовательские папки, то есть веточки дерева, содержащие произвольный набор объектов. Для этого тыкаем в самую правую в ряду маленьких кнопочек в cамом верху вкладки "Objects". Появляется окошко создания папки. Справа вверху "Создать новую папку". Для папки указываем название и параметры подключения. Последние нужны для того, чтобы пользовательская папка появлялась в браузере объектов только для этого подключения. Если их не указать, папка будет появляться всегда, при работе с разными проектами довольно неудобно. Папка может быть вложенной по отношению к существующим, для этого указываем Parent. Сам набор объектов для папки можно задать тут же с помощью условия, например object_name like 'MY%'. Или можно создать пустую папку, а потом на любом объекте в дереве или в тексте кода правой кнопкой - Add to folder.

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

2. Встроенный файловый менеджер. Рядом с закладкой Object есть ещё закладка Files. Если предполагается работа с какими-нибудь патчами, выпускаемыми в виде набора файлов, то очень удобно затащить всю папку прямо в эту закладочку и открывать скрипты прямо отсюда, без использования внешнего файлового менеджера. Если у файла нестандартное расширение, то в контекстном меню по правой кнопке есть выбор Open As - Program Window/SQL Window/Command Window.

3. Встроенный генератор данных. Если надо заполнить пустую таблицу какими-нибудь данными для тестировании или демонстрации и неохота возиться со скриптом, то в PL/SQL Developer есть генератор данных. В меню Tools - Data Generator. Вверху выбираем схему и название таблицы, если она создана, либо можно создать произвольную таблицу прямо тут. Затем нажимает кнопочку с многоточием в поле Data и появляется окошко с вариантами заполнения полей. Там есть три закладки: Datasets, Functions, Characters. Наиболее интересна тут вторая закладка - Functions. Можно заполнять поля последовательностью, случайными числами, величинами из фиксированного списка, длинными текстовыми фрагментами, и самое важное - значениями из подзапроса, то есть можно заполнить поле, представляющее собой внешний ключ. Для выбора способа заполнения кликаем на нём два раза. Кроме того, если вы одновременно заполняете с помощью Data Generator несколько связанных таблиц, то в списке полей таблицы есть самый правый столбец Master. Родительская таблица к этому времени уже должна быть вынесена в Data Generator.

Результаты заполнения можно получить в виде SQL-скрипта (средняя из трёх жёлтых кнопок в нижнем левом углу окна).

Если попытаться с помощью Data Generator вставить очень много записей, то выходит очень долго. Скорее, он пригодится, если надо наскоро заполнить таблицу с большим количеством разнородных полей, это будет быстрее, чем писать руками скрипт для всех полей.

4. Макросы. Макросами мало кто пользуется, потому что их почему-то воспринимают, как расширение команды Paste. На самом деле макрос не только вставляет фрагмент текста, он исполняет последовательность операций, выполненных на клавиатуре. То есть можно, поставив макрос на запись, набрать to_date('','dd.mm.yyyy') и клавишами перевести курсор в первые пустые кавычки. При исполнении макроса курсор сам встанет в кавычки, удобнее будет вводить дату. Ещё интереснее макросом исполнять запрос в новом окне. Ставим макрос на запись, затем Alt-N - в открывшейся менюшке клавишами выбираем SQL Window - в новом окне вводим текст запроса - F8. При исполнении макрос будет открывать новое окошко и исполнять в нём запрос.

5. Совсем простая вещь - нажав Ctrl-E, можно просмотреть список последних выполненных SQL-запросов, причём не только за последний запуск PL/SQL Developer, но и за предыдущие.

6. И самое поразительное - оказывается, из PL/SQL Developer можно запускать PL/SQL Developer. Для этого в меню File - New Instance.

SQL for Modeling

Я подготовил перевод статьи про расширение стандартного SQL в Oracle 10g, называемое SQL for Modeling. Доселе эта тема была очень плохо освещена на русском языке, я не нашёл ни одной сколько-нибудь внятной статьи. В SQL for Modeling вводится специальное расширение синтаксиса оператора SELECT, оператор MODEL, позволяющий представлять выбираемые данные в виде многомерных массивов и обращаться к ячейкам с помощью набора измерений, то есть обращаться с данными примерно так, как это делается в Excel.

Ознакомиться можно тут: https://www.evernote.com/shard/s334/sh/5c900135-7f4e-4ad0-8b38-97fe199aad64/d35535742d5e58763bac0e099c48c380

Чуть позже выложу в PDF.



Оригинал тут: http://www.oracle.com/technetwork/middleware/bi-foundation/10gr1-twp-bi-dw-sqlmodel-131067.pdf

В смешанных чувствах

Первый раз я испытал подобное разочарование, когда в прошлом году наебнулся ipicture. Второй раз - когда easyfoto.ru начал вместо картинок показывать рекламу. И третий раз - на позапрошлой неделе, когда долбаный imglink.ru просрал все мои картинки в ЖЖ за целый год.

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

Изучение интернетов показало, что все эти бесплатные фотоговнохостинги по большому счёту уже отжили своё и самая почётная тема сейчас - гуглплюс. Заодно появляется лишний повод подновить свой тамошний аккаунт, навести порядок в пикасе и сложить все использованные для ЖЖ фоты в одно общедоступное место. Вдобавок в процессе я внезапно открыл для себя дропбокс и немедленно приобщился к волшебному миру облачных сервисов. Без сомнения, эта штука мне очень пригодится, в частности, для переводов, поделок в SketchUp, обработки фотачек и прочего рукоделия. Бесплатно дают два гигабайта, но так как я изволил проследовать по реферальной ссылке какого-то лошка, мне выписали ещё 500МБ бонуса. Пустячог, а приятно, в наш век информационных технологий всегда есть на что потратить лишние пол-гига.

Вотакие новости, нет худа без добра, в ближайшее время грядёт массовая перезаливка фот. Кстате меня уже давно не оставляет идея свои наиболее памятные и дорогие сердцу посты скопировать на сохранение как есть прямо с фоткаме. Можно было бы просто скопировать в ворд, но куда интереснее было бы завести как бы свою собственную локальную жежешку с бл. и шл., чтобы работал кат и прочие LJ-тэги. Интересно, можно ли такое провернуть малыми усилиями?
  • Current Music
    Slade - "Come Feel the Noize"
  • Tags
    ,
Ясенево-2007

Все работы хороши-2007

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

 Насколько я себя помню, первым делом, которым я пожелал заниматься, была журналистика. Collapse )