Browsing all articles in Uncategorized
Oct
7

Недостатки SQL Explorer в Eclipse

Author osya    Category Uncategorized     Tags ,

Мои постоянные читатели, вероятно, помнят, что не так давно я перешёл с Microsoft SQL Server Management Studio на плагин SQL Explorer для Eclipse. Теперь я вижу некоторые недостатки этого продукта:

  1. У меня не получилось подключаться к серверам SQL Server непосредственно с использованием Windows Authentication, как это легко можно делать в Management Studio. Для подключения к серверам приходится создавать ODBC DSN. Хотя если изо дня в день используются одни и те же серверы это не доставляет особых неудобств.
  2. Не работает клавиша “Del”. Удалять куски текста приходится клавишей “Backspace”
  3. Не удаётся посмотреть текст view’шки
  4. Нельзя скопировать колонку из resultset и вставить её в Excel. Приходится делать экспорт в csv. Но как задать настройки экспорта по-умолчанию? Каждый раз при экспорте мне приходится выбирать кодировку win-1281, устанавливать три флажка и выбирать файл. Хотя файл использую один и тот же – это просто аналог буфера обмена.
  5. Настройки подключений к базам не сохраняются при перезупуске Eclipse. Приходится создавать подключения заново.

Может быть, эти проблемы легко решаются – не знаю. Больше пока никаких неудобств не замечено. Наоборот удобно совмещать в одном продукте и работу с SQL, и PowerDesigner.

Sep
23

Twitter в Emacs

Author osya    Category Uncategorized     Tags ,

Возможно, для кого-то это ещё новость, но в emacs можно читать и писать в twitter. Для этого есть различные скрипты. Я остановился на twitter.el. Поставил. Работает. Инструкция по установке есть здесь. Единственный минус, который я заметил – twitter.el автоматически не обновляет список сообщений? То есть, надо вручную обновлять? Думаю, что даже если это так, то проблема решаема – emacs могуч. А вот полезная статья по выбору и настройке скриптов для twitter в emacs.

Sep
23

Переход на 22нм-техпроцесс

Author osya    Category Uncategorized     Tags

Компания Intel на конференции Intel Developer Forum 2009 официально объявила о постепенном переходе на 22нм-техпроцесс, который планируется полностью завершить к 2012 году. Тенденции остались теми же, что и год назад – повышение производительности, снижение энергопотребления и тепловыделения, стремление к компактности за счёт создания всё большего числа SoC (System on Chip). CEO Intel не преминул напомнить всем, что закон Мура всё ещё действует, и компания приложит все усилия, чтобы и в дальнейшем следовать ему.

Кроме того, Intel активно развивает платформу Moblin, которая доросла уже до версии 2.1 и впервые стала доступна для мобильных телефонов (пока в большей степени для смартфонов)! Дизайн и идеология системы были основательно переработаны для лучшей работы на мобильных устройствах. Большая роль отводится виджетам и панельной системе навигации, которая позволяет легко переключаться между несколькими приложениями. Особый упор делается на высокую интеграцию с различными социальными сетями и онлайн-сервисами.

Источник “Компьютерра

Sep
23

Ввод мета-команд в Emacs W32

Author osya    Category Uncategorized     Tags

Поставил себе на днях Emacs W32. Одна из проблем с которой я столкнулся после установки – невозможность ввода мета-команд клавишей Alt. Например, для запуска R через ESS необходимо ввести команду M-x R. Оказалось, что для ввода мета-команд можно использовать клавишу Esc. Но если при вводе мета-команд с клавишей Alt клавишу Alt необходимо удерживать, то при вводе мета-команд с помощью клавиши Esc необходимо нажать и отпустить Esc, а затем нажать на клавишу нужной команды. Ответ на этот вопрос я нашёл в Emacs FAQ – статья под названием “10.9 What if I don’t have a <Meta> key?”

Sep
18

Настройка русского языка в emacs

Author osya    Category Uncategorized     Tags

При начале работы с Emacs в Windows часто возникает проблема с кодировками (символы кириллицы отображаются некорректно).

Разберемся как настроить корректное отображение символов кириллицы в shell, который вызывается из EmacsW32. Я в emacs использую два shell – cygwin bash по умолчанию и cmd shell.

Напомню, что запуск shell’а по умолчанию осуществляется командой M-x shell. А запуск cmd shell – командой M-x cmd-shell.

Shell – это отдельный процесс. Поэтому, для корректного отображения символов кириллицы в shell в emacs необходимо использовать функцию set-buffer-process-coding-system.

Интерактивно изменить кодировки процессов в emacs можно с помощью команды C-x <Ret> p. Интерактивно удобно подбирать кодировку, которая будет корректно отображать кириллицу для данного процесса.

После того, как вы определили какая кодировка вам нужна можно внести изменения в файл инициализации. Привожу фрагмент своего файла ~/.emacs.d/init.el:

(defadvice shell (after my-shell-advice)
  (set-buffer-process-coding-system 'utf-8 'undecided-unix))
(ad-activate 'shell)

(defadvice cmd-shell (after my-cmd-shell-advice)
  (set-buffer-process-coding-system 'cp1251 'undecided-unix))
(ad-activate 'cmd-shell)

Теперь после перезапуска emacs и в cygwin bash, и в cmd символы кириллицы будут отображаться корректно.

PS. И напоследок привожу две полезные команды:

  • M-x list-coding-system выводит список кодировок
  • M-x describe-coding-system описание кодировки
Sep
15

Анализ строки в SQL Server

Author osya    Category Uncategorized     Tags , ,

Возникла следующая задача. Есть таблица в СУБД Microsoft SQL Server, содержащая ~3000 записей. Одно из полей этой таблицы имеет тип varchar(255) и содержит набор текстовых выражений, заключённых в двойные кавычки и разделённых запятыми. Требуется подсчитать количество этих текстовых выражений для каждой записи таблицы.

Я решал задачу с помощью скрипта на T-SQL и с использованием курсоров.

Сначала объявил временную таблицу #t, содержащую уникальный идентификатор исследуемой таблицы и анализируемое поле

create table #t (Код char(24), ObrCou int, RepCou int)
insert into #t
select Код, 0, 0
from ...

Затем объявил курсор по исходной таблице

declare cur cursor for
select ...

Далее открываю курсор, делаю цикл и на каждом шаге подсчитываю количество текстовых выражений

open cur
declare @c1 char(24), @c2 varchar(255), @c3 varchar(255)
fetch next from cur into @c1, @c2, @c3
while @@FETCH_STATUS = 0
begin
	declare @s varchar(255), @i int, @j int, @cou1 int, @cou2 int
	set @s = @c2
	set @cou1 = 0
	while (charindex('"', @s) > 0) begin
		set @i = charindex('"', @s)
		if (@i > 0) begin
		  set @j = charindex('"', @s, @i + 1)
		  if (@j > 0) begin
			if (@j > @i + 1) begin
				set @cou1 = @cou1 + 1
			end
			set @s = right(@s, len(@s) - @j)
		  end
		end
	end

	update #t set ObrCou = @cou1, RepCou = @cou2 where Код = @c1
	fetch next from cur into @c1, @c2, @c3
end
close cur
deallocate cur

select Top 10 * from #t where RepCou <> 0

drop table #t

Количество текстовых выражений записывается в поле RepCou таблицы #t.
Рассмотренный вариант решения работает очень медленно и потому применим только для небольшого количества записей. Я так и не дождался обработки всей таблицы из 3000 записей.
Я пытался копировать анализируемый столбец в Excel. Но Excel у первого текстового выражения убирает двойные кавычки, а остальные оставляет.
Думаю, что для решения поставленной задачи нужно выгрузить исходную таблицу в CSV и дальше анализировать в AWK, R или в Python.

Sep
8

Минусы KNIME

Author osya    Category Uncategorized     Tags ,

Рассмотрим, какие минусы есть у программы KNIME:

  • Невозможность работы с OLAP;
  • Невозможность чтения данных из Excel;
  • Невозможность создания узлов с переменным количеством входных потоков (например, узел, который будет суммировать числа, поступающие по всем входным потокам).
Sep
8

Скрипт для скрытия ненужных полей в таблицах в PowerDesigner

Author osya    Category Uncategorized     Tags , ,

При анализе ER-диаграмм в PowerDesigner иногда возникает потребность для облегчения восприятия скрыть некоторые служебные поля в таблицах. Пусть все таблицы на диаграмме содержат одинаковый набор служебных полей – ID, ПометкаУдаления, Версия. Для их скрытия удобно использовать следующий VBScript:

Set myModel = ActiveModel
Set diag = ActiveDiagram
For each T in myModel.Tables
  For each C in T.Columns
    If C.name = "ID" or C.name = "ПометкаУдаления" or C.name = "Версия" _
      then C.Displayed = false
    Next
Next
Sep
2

Вопросы по emacs

Author osya    Category Uncategorized     Tags

Я новичок (newbie) в emacs. Хотя и пытался его осваивать когда-то давно. Сейчас в процессе освоения emacs у меня возникают некоторые проблемы, которые я не могу решить быстро с помощью поиска в интернет или в справке. Буду признателен за любую помощь по этим вопросам.

  1. Я использую emacs в Windows. Как вставить содержимое буфера обмена Windows в emacs?
  2. При использовании расширения ESS для интеграции emacs и R если R возвращает текст на русском языке, то они отображаются некорректно в emacs
  3. Как настроить просмотр PDF в emacs? Есть дополнение doc-view, но я его не смог настроить. Я понимаю, что emacs не самый удобный инструмент для просмотра PDF, но всё же интересно было бы настроить такубю возможность.
Sep
1

Основы R Language

Author osya    Category Uncategorized     Tags ,

Далее привожу список полезных с моей точки зрения команд в R

ls(), objects() – список используемых объектов

rm(<object_name>) – удалить объект object_name

c, seq, rep, gl – генерация последовательностей чисел

rnorm, rt – генерация случайных чисел с различными распределениями. rnorm – нормальное распределение; rt – распределение Стьюдента

matrix, array, dim – создание масива/матрицы. dim – задаёт размерности. array – создание массива, а matrix – создание матрицы (двумерного массива)

cbind, rbind – объединение матриц. cbind объединяет по столбцам, а rbind – по строкам

list, unlist – создание списка и преобразование списка в одномерный массив

data.frame – создание Data Frame (гибрид матрицы и списка)

nrow, ncol – количество рядов и колонок в Data Frame

edit – Excel-like editor for input data in the Data Frame

data() – список наборов данных (data sets), поставляемых вместе с R

cat – вывод результатов в консоль

file.choose() – диалоговое окно открытия файла в Windows

save.image() – сохранение workspace в файл

library(<package_name>) – загрузить пакет package_name (если этот пакет установлен в системе)