Vim: как поместить результат функции в set?
В общем я хочу сделать вот так:
set complete += expand('%:p')
"#{a} #{b}"
В общем я хочу сделать вот так:
set complete += expand('%:p')
"#{a} #{b}"
Хочу опубликовать свою либу под такой лицензией, есть какие-либо заготовки?
Не могу понять где оно хочет видеть либу
$ ~/.source/gdal-1.10.1+dfsg/frmts/mrsid/pkg ./configure --with-gdal=/usr/local/bin/gdal-config --with-mrsid=/home/special-k/.source/MrSID_DSDK-9.1.0.4045-linux.x86-64.gcc44/Raster_DSDK --with-jp2mrsid=no --with-geotiff=yes
checking for gcc... gcc
...
checking for MrSID JPEG2000 support... disabled
checking for XTIFFClientOpen in -lgeotiff... no
configure: error: libgeotiff is required to build GDAL MrSID driver
$ dpkg -L libgeotiff-dev
/.
/usr
/usr/include
/usr/include/geotiff
/usr/include/geotiff/epsg_gcs.inc
/usr/include/geotiff/epsg_datum.inc
/usr/include/geotiff/geo_config.h
/usr/include/geotiff/geo_simpletags.h
/usr/include/geotiff/epsg_ellipse.inc
/usr/include/geotiff/geo_keyp.h
/usr/include/geotiff/geo_normalize.h
/usr/include/geotiff/geokeys.h
/usr/include/geotiff/epsg_vertcs.inc
/usr/include/geotiff/epsg_units.inc
/usr/include/geotiff/geonames.h
/usr/include/geotiff/xtiffio.h
/usr/include/geotiff/epsg_pm.inc
/usr/include/geotiff/geo_ctrans.inc
/usr/include/geotiff/geo_tiffp.h
/usr/include/geotiff/geotiffio.h
/usr/include/geotiff/epsg_pcs.inc
/usr/include/geotiff/geokeys.inc
/usr/include/geotiff/epsg_proj.inc
/usr/include/geotiff/geotiff.h
/usr/include/geotiff/cpl_serv.h
/usr/include/geotiff/geovalues.h
/usr/include/geotiff/geo_incode_defs.h
/usr/lib
/usr/lib/libgeotiff.a
/usr/share
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/listgeo.1.gz
/usr/share/doc
/usr/share/doc/libgeotiff-dev
/usr/share/doc/libgeotiff-dev/index.dox
/usr/share/doc/libgeotiff-dev/README.Debian
/usr/share/doc/libgeotiff-dev/copyright
/usr/share/doc/libgeotiff-dev/manual.txt.gz
/usr/lib/libgeotiff.so
/usr/share/doc/libgeotiff-dev/changelog.Debian.gz
/usr/share/doc/libgeotiff-dev/README.gz
сам конфиг
$ cat ./configure.in
dnl ***************************************************************************
dnl $Id: configure.in 9971 2006-08-23 20:06:02Z fwarmerdam $
dnl
dnl Project: GDAL MrSID Plugin
dnl Purpose: Configure source file.
dnl Author: Frank Warmerdam, warmerdam@pobox.com
dnl Changed by: Alan Boudreault, aboudreault@mapgears.com on the basis of
dnl GDAL GRASS Plugin
dnl
dnl ***************************************************************************
dnl Copyright (c) 2005, Frank Warmerdam
dnl Copyright (c) 2008, Alan Boudreault
dnl
dnl Permission is hereby granted, free of charge, to any person obtaining a
dnl copy of this software and associated documentation files (the "Software"),
dnl to deal in the Software without restriction, including without limitation
dnl the rights to use, copy, modify, merge, publish, distribute, sublicense,
dnl and/or sell copies of the Software, and to permit persons to whom the
dnl Software is furnished to do so, subject to the following conditions:
dnl
dnl The above copyright notice and this permission notice shall be included
dnl in all copies or substantial portions of the Software.
dnl
dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
dnl OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
dnl FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
dnl THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
dnl LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
dnl FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
dnl DEALINGS IN THE SOFTWARE.
dnl ***************************************************************************
dnl Disable configure caching ... it causes lots of hassles.
define([AC_CACHE_LOAD], )
define([AC_CACHE_SAVE], )
dnl Process this file with autoconf to produce a configure script.
AC_INIT(Makefile.in)
dnl We require autoconf 2.52+ for libtool support on cygwin/mingw hosts
AC_PREREQ(2.52)
dnl Checks for programs.
AC_PROG_CC
AC_PROG_CXX
AC_PROG_RANLIB
AC_COMPILER_PIC
AC_LD_SHARED
AC_COMPILER_WFLAGS
dnl ---------------------------------------------------------------------------
dnl Find GDAL
dnl ---------------------------------------------------------------------------
AC_ARG_WITH(gdal,
[ --with-gdal[=PATH] GDAL (PATH is path to gdal-config)],,)
if test "$with_gdal" = "yes" -o "$with_gdal" = "" ; then
if test "`basename xx/$with_gdal`" = "gdal-config" ; then
GDAL_CONFIG="$with_gdal"
fi
if test -z "$GDAL_CONFIG" ; then
AC_PATH_PROG(GDAL_CONFIG, gdal-config, no)
fi
if test "$GDAL_CONFIG" = "no" ; then
AC_MSG_ERROR([couldn't find gdal-config])
fi
elif test -n "$with_gdal" -a "$with_gdal" != "no" ; then
GDAL_CONFIG=$with_gdal
if test -f "$GDAL_CONFIG" -a -x "$GDAL_CONFIG" ; then
AC_MSG_RESULT([user supplied gdal-config ($GDAL_CONFIG)])
else
AC_MSG_ERROR(['$GDAL_CONFIG' is not an executable. Make sure you use --with-gdal=/path/to/gdal-config])
fi
else
AC_MSG_ERROR([gdal required to build GDAL MrSID driver])
fi
LIBS="`$GDAL_CONFIG --libs` $LIBS"
GDAL_INC=`$GDAL_CONFIG --cflags`
AC_SUBST(GDAL_INC, $GDAL_INC)
dnl ---------------------------------------------------------------------------
dnl Where to put driver?
dnl ---------------------------------------------------------------------------
AC_ARG_WITH(autoload,[ --with-autoload[=DIR] Directory for autoload drivers],,)
if test "$with_autoload" != "" ; then
AUTOLOAD_DIR=$with_autoload
else
if $GDAL_CONFIG --autoload > /dev/null 2>&1 ; then
AUTOLOAD_DIR=`$GDAL_CONFIG --autoload`
else
AUTOLOAD_DIR=`$GDAL_CONFIG --prefix`/lib/gdalplugins
fi
fi
AC_MSG_RESULT(using $AUTOLOAD_DIR as GDAL shared library autoload directory)
AC_SUBST(AUTOLOAD_DIR,$AUTOLOAD_DIR)
dnl ---------------------------------------------------------------------------
dnl Find MrSID stuff
dnl ---------------------------------------------------------------------------
MRSID_INCLUDE=
MRSID_FLAGS=
MRSID_SETTING=no
HAVE_KAKADU=no
AC_ARG_WITH(mrsid,[ --with-mrsid[=ARG] Include MrSID support (ARG=path to MrSID DSDK or no)],,)
AC_ARG_WITH(jp2mrsid,[ --with-jp2mrsid[=ARG] Enable MrSID JPEG2000 support (ARG=yes/no)],,)
if test "x$with_mrsid" = "xno" -o "x$with_mrsid" = "x" ; then
AC_MSG_ERROR([MrSID DSDK is required to build GDAL MrSID driver])
else
MRSID_BASE="$with_mrsid/include"
AC_MSG_CHECKING([for lt_base.h in $MRSID_BASE/support])
if test -r "$MRSID_BASE/support/lt_base.h" ; then
AC_MSG_RESULT([found MrSID DSDK version 4.x or newer.])
MRSID_SETTING=yes
MRSID_INCLUDE="-I$MRSID_BASE/base -I$MRSID_BASE/metadata -I$MRSID_BASE/mrsid_readers -I$MRSID_BASE/j2k_readers -I$MRSID_BASE/support"
else
AC_MSG_RESULT([not found.])
AC_MSG_CHECKING([for lt_base.h in $MRSID_BASE])
if test -r "$MRSID_BASE/lt_base.h" ; then
AC_MSG_RESULT([found MrSID DSDK version 7.x or newer.]);
MRSID_SETTING=yes
MRSID_INCLUDE="-I$MRSID_BASE"
fi
fi
if test $MRSID_SETTING = yes ; then
MRSID_LIBS="-lltidsdk -lpthread"
AC_MSG_CHECKING([for MG3ImageWriter.h in $with_mrsid/include/mrsid_writers])
if test -r "$with_mrsid/include/mrsid_writers/MG3ImageWriter.h" ; then
AC_MSG_RESULT([found MrSID ESDK version 4.x or newer.])
MRSID_FLAGS="-DMRSID_ESDK $MRSID_FLAGS"
MRSID_INCLUDE="-I$with_mrsid/include/mrsid_writers -I$with_mrsid/include/j2k_writers $MRSID_INCLUDE"
if test -r $with_mrsid/3rd-party/lib/Release/libcryptopp.a ; then
MRSID_LIBS="-lltiesdk -lcryptopp -lxmlparse $MRSID_LIBS"
else
MRSID_LIBS="-lltiesdk -lxmlparse $MRSID_LIBS"
fi
else
AC_MSG_RESULT([no encoding support.])
fi
AC_MSG_CHECKING([for MrSID JPEG2000 support])
if test "x$with_jp2mrsid" = "xyes" -a "$HAVE_KAKADU" = "yes" ; then
AC_MSG_ERROR([MrSID JPEG2000 support requested, but this is incompatible with use of standalone Kakadu])
fi
MRSID_KAKADU_LIB=
if test "$HAVE_KAKADU" = "no" ; then
if test x"$with_jp2mrsid" = x"" -o x"$with_jp2mrsid" = x"yes" ; then
if test -r $with_mrsid/3rd-party/lib/Release/libltikdu.a ; then
with_jp2mrsid=yes
MRSID_KAKADU_LIB=-lltikdu
elif test -r $with_mrsid/3rd-party/lib/Release/liblt_kakadu.a ; then
with_jp2mrsid=yes
MRSID_KAKADU_LIB=-llt_kakadu
else
AC_MSG_ERROR([MrSID JPEG2000 support requested, but libltikdu.a not found.])
fi
fi
fi
if test "x$with_jp2mrsid" = "xyes" ; then
MRSID_LIBS="$MRSID_LIBS $MRSID_KAKADU_LIB"
MRSID_FLAGS="-DMRSID_J2K $MRSID_FLAGS"
AC_MSG_RESULT([enabled])
else
AC_MSG_RESULT([disabled])
fi
if test -r "$with_mrsid/lib/libltidsdk.a" ; then
MRSID_LIBS="-L$with_mrsid/lib -L$with_mrsid/3rd-party/lib $MRSID_LIBS"
else
MRSID_LIBS="-L$with_mrsid/lib/Release -L$with_mrsid/3rd-party/lib/Release $MRSID_LIBS"
fi
LIBS="$MRSID_LIBS $LIBS"
else
MRSID_SETTING=no
AC_MSG_RESULT([not found.])
AC_MSG_ERROR([ MrSID requested, but components not found.])
fi
fi
AC_SUBST(MRSID_INCLUDE,$MRSID_INCLUDE)
AC_SUBST(MRSID_FLAGS,$MRSID_FLAGS)
dnl ---------------------------------------------------------------------------
dnl Select a libgeotiff library to use.
dnl ---------------------------------------------------------------------------
GEOTIFF_INCLUDE=
GEOTIFF_LIBS=
GEOTIFF_SETTING=no
AC_ARG_WITH(geotiff,[ --with-geotiff=ARG Libgeotiff library to use (ARG=yes or path)],,)
if test "x$with_geotiff" = "xno" ; then
AC_MSG_ERROR([libgeotiff is required to build GDAL MrSID driver])
else
GEOTIFF_SETTING=not_found
if test "x$with_geotiff" = "xyes" -o "x$with_geotiff" = "x" ; then
AC_CHECK_LIB(geotiff,XTIFFClientOpen,GEOTIFF_SETTING=yes,GEOTIFF_SETTING=not_found)
if test "$GEOTIFF_SETTING" = "yes" ; then
GEOTIFF_LIBS="-lgeotiff"
if test -d /usr/include/geotiff ; then
GEOTIFF_INCLUDE="-I/usr/include/geotiff"
fi
else
AC_MSG_ERROR([libgeotiff is required to build GDAL MrSID driver])
fi
else
dnl We now require libgeotiff 1.2.1 (for XTIFFClientOpen).
dnl first check if $with_geotiff/lib has the library:
AC_CHECK_LIB(geotiff,XTIFFClientOpen,GEOTIFF_SETTING=yes,GEOTIFF_SETTING=not_found, -L$with_geotiff/lib)
if test $GEOTIFF_SETTING = "yes" ; then
GEOTIFF_LIBS="-L$with_geotiff/lib -lgeotiff"
if test -d $with_geotiff/include ; then
GEOTIFF_INCLUDE="-I$with_geotiff/include"
fi
else
dnl check if $with_geotiff itself contains the header and library (e.g. as an uninstalled build directory would)
AC_CHECK_LIB(geotiff,XTIFFClientOpen,GEOTIFF_SETTING=yes,GEOTIFF_SETTING=not_found,-L$with_geotiff)
if test $GEOTIFF_SETTING = "yes" ; then
GEOTIFF_LIBS="-L$with_geotiff -lgeotiff"
GEOTIFF_INCLUDE="-I$with_geotiff"
else
AC_MSG_ERROR([libgeotiff is required to build GDAL MrSID driver])
fi
fi
echo "using libgeotiff from $with_geotiff."
fi
LIBS="$GEOTIFF_LIBS $LIBS"
fi
AC_SUBST(GEOTIFF_INCLUDE,$GEOTIFF_INCLUDE)
dnl ---------------------------------------------------------------------------
rm -f conftest*
AC_OUTPUT(Makefile)
Ну вот куда ему засунуть?
Есть массив строк, необходимо узнать какие из них присутствуют в БД. Как это лучше делать, и кто с этим справится лучше всего?
Дополнение: в исходном массиве ~100..1000 строк. В базе ~100k..1kk
Сочинил вот штуку
Object.defineProperty(Array.prototype, 'lay', {
enumerable: false,
value: function(func, context) {
return func.apply(context, this);
}
});
(new Date).toJSON().split('T').lay(function(el1, el2) {
return el1.split('-').reverse().join('.') + ' ' + el2.split('.')[0];
}); // "05.08.2014 09:24:47"
Нужна такая штука (в идеале на руби), которая бы отслеживала транзакции в различные платежные системы (и умела работать со множеством существующих платежных систем).
Т.е. юзер выбирает как платить и оплачивает, а уже работая с сабжем я узнаю статус платежа и т.д. Ну естественно должны быть какие-то callbackи..
В общем, некая абстракция от всех платежных систем.
Есть виртуальный сервак у хостера, на нем крутятся сайты. Надо сделать так, чтобы один из них был доступен с трудом, например через ssh тунель и недоступен при обычном обращении на порт из вне, как это сделать?
Ситуация примерно следующая: мне лень писать красивую загрузку файлов (с прелоадерами и т.п.), но хочется добавить ее в обычную форму, чтобы в итоге отправить через эту форму id на загруженный файл(ы). Существуют ли готовые решения?
Я попробовал PhoneGap/Cordova и судя по всему оно основано на стандартном webview, а мне хотелось бы опереться на какой-нибудь современный движок (gecko/webkit), скажите, есть ли такие упаковщики?
В последнее время интернет наводнили изображения графической оболочки Unity на устройствах китайской фирмы MEIZU.
Наконец, поступило официальное подтверждение проводящихся в Meizu работ по созданию устройств на базе Ubuntu:
«Инженеры MEIZU на самом деле ведут тестирование Ubuntu на MEIZU. Однако этот процесс пока в самой начальной стадии и не является на данный момент для компании приоритетным, поэтому о выходе Ubuntu пока ничего сказать точно нельзя. Все основные усилия MEIZU на данный направлены на совершенствование собственной оболочки FLYME».
Как можно заметить, китайских производителей не устраивает господство Google на рынке мобильных операционных систем, и сейчас, они, как никогда, готовы экспериментировать, выпуская устройства на новых платформах.
Фотографии устройства:
Что бы сохранять не только темы (их, в конце-концов, вообще можно в закладки браузера добавлять), но и конкретные сообщения.
Некоторые видео просматриваются без флэша, а некоторые нет, в чем прикол?
Действительно ли параллельны воркеры, не прерывают ли они основной поток? И если прерывают, то в каких случаях?
Нужно написать крохотный скрипт, который экспортировал бы все слои в пнг файлы. Особенность заключается в том, что у слоев есть маска.
Я вижу примерно следующий сценарий:
Для каждого слоя создается новый объект image, в него добавляется дубликат слоя, и далее экспорт.
Вопросы: как в консоли получить объект текущего изображения?
Где лучше смотреть АПИ гимпа?
Нашел вот на просторах инета http://www.uznai-pravdu.ru/viewtopic.php?f=31&t=2261
А как пытался получить увечия ты?
Ну и цитатку с баша под настроение:
-----
На прошлой неделе довелось мне побывать в Питере на финале Imagine Cup 2013. Моей функцией было рассказывать как круто новый Виндовз 8.1 может управлять 3D принтерами и соответственно показывать весь процесс живьем. Так как конкурс международный, через мой стенд за четыре дня прошла пара сотен человек со всего света, и я собрал неплохую статистику:
Китайцы - обязательно фотографировали механику принтера.
Индусы - обязательно просили показать им ПО.
Русские - обязательно спрашивали, печатал ли я уже пистолет.
-----
Реализую вот следующую схемку, ищу слабые места.
Существуют обертки вокруг дом элеметов (я называю их виджеты (и где-то мы уже это проходили)) и существую обсерверы с глобальной видимостью (я называю их менеджеры).
В виджетах находится элементарный функционал визуализации (как добавление css классов). В менеджерах находится весь функционал касающийся инициализации виджетов, их добавления/удаления, доступа к виджетам (при необходимости). Как правило менеджер является коллекцией виджетов. Виджет не содержит конкретной реакции на события элементов, вместо этого виджет генерирует событие в менеджере, и помещая в него все что требуется (себя, дом элемент, дочерний виджет). Т.о. вся бизнес логика находится в менеджере. Одновременно с этим (ведь менеджер это обсервер), на эти события могут подписываться другие объекты (в первую очередь другие менеджеры).
Т.о. менеджеры взаимодействуют между собой (им это удобно, ведь они глобальны (причем, как правило, с помощью событий)), а виджеты взаимодействуют только со своим менеджером. Менеджеры могут не иметь виджетов, а, например, только получать данные от сервера и генерировать связанные с этим события.
В общем, я пробую эту схемку и мне нравится, то самое чувство как будто это то, что должно быть.
пс
я понимаю, что каждое первое сообщение будет отправкой к либе типа бигбон, но мало ли.
Есть такая халява где-нибудь? В идеале с каким-нибудь rsync и возможностью привязать домен..
Кстати, я же правильно понимаю, что прямую ссылку на файлы яндекс.диска и дропбокса делать нельзя?
Вроде поставил cue plugin для xmms2, но что-то не добавляется, и я подумал.. а нет ли возможности делать некие отметки, чтобы после прохождения одной отметки проигрывание перемещалось к другой? Или чтобы при проигрывании опр. отметки происходило событие и рассылалось через dbus например?
Как известно, в ubuntu обновили настройки раскладки. По-умолчанию переключение стоит на super + space, но не работает, и не меняется, в т.ч. на привычный мне капс.
Что-нибудь можно сделать, или ждать пока само починится?
Кому-то эти нюансы, вероятно известны, а кому-то будут интересны. Коротко: помните о существовании Set, each_value, find. - производительность от этого может вырасти в разы. Так же, удобная штука - использование скобок в параметрах блоков.
require 'set'
a = []
s = Set.new
h = {}
n = 10000
Benchmark.bm(3) do |b|
puts 'add'
b.report("array:"){ 200.times{|i| a << i } }
b.report("set :"){ 200.times{|i| s << i } }
b.report("hash :"){ 200.times{|i| h[:"#{i}"] = i } }
puts 'include?'
b.report("array:"){ 200.times{|i| a.include? i } }
b.report("set :"){ 200.times{|i| s.include? i } }
puts 'inject'
b.report("array:"){ n.times{|i| a.inject(0){|s, v| s + v } } }
b.report("set :"){ n.times{|i| s.inject(0){|s, v| s + v } } }
b.report("hash :"){ n.times{|i| h.inject(0){|s, ( k, v )| s + v } } }
b.report("hash :"){ n.times{|i| h.each_value.inject(0){|s, v| s + v } } }
b.report("hash :"){ n.times{|i| h.inject(0){|s, v| s + v.last } } }
puts 'find'
b.report("array:"){ n.times{|i| a.find{|el| el == 150 } } }
b.report("set :"){ n.times{|i| s.find{|el| el == 150 } } }
b.report("hash :"){ n.times{|i| h[:"150"] } }
puts 'each'
b.report("array:"){ n.times{|i| a.each &:to_s } }
b.report("set :"){ n.times{|i| s.each &:to_s } }
b.report("hash :"){ n.times{|i| h.each_value &:to_s } }
b.report("hash :"){ n.times{|i| h.each{|k,v| v.to_s } } }
puts 'map'
b.report("array:"){ n.times{|i| a.map &:to_s } }
b.report("set :"){ n.times{|i| s.map &:to_s } }
b.report("hash :"){ n.times{|i| h.each_value.map &:to_s } }
b.report("hash :"){ n.times{|i| h.map{|k,v| v.to_s } } }
end
результат на mri
user system total real add array: 0.000000 0.000000 0.000000 ( 0.000043) set : 0.000000 0.000000 0.000000 ( 0.000103) hash : 0.000000 0.000000 0.000000 ( 0.000344) include? array: 0.000000 0.000000 0.000000 ( 0.000877) set : 0.000000 0.000000 0.000000 ( 0.000060) inject array: 0.230000 0.000000 0.230000 ( 0.226024) set : 0.290000 0.010000 0.300000 ( 0.298473) hash : 0.490000 0.000000 0.490000 ( 0.487521) hash : 0.270000 0.000000 0.270000 ( 0.287539) hash : 0.490000 0.000000 0.490000 ( 0.497619) find array: 0.140000 0.000000 0.140000 ( 0.142135) set : 0.200000 0.000000 0.200000 ( 0.198234) hash : 0.000000 0.000000 0.000000 ( 0.000974) each array: 0.380000 0.000000 0.380000 ( 0.384158) set : 0.460000 0.000000 0.460000 ( 0.453658) hash : 0.450000 0.010000 0.460000 ( 0.457729) hash : 0.670000 0.000000 0.670000 ( 0.672617) map array: 0.430000 0.000000 0.430000 ( 0.430366) set : 0.570000 0.000000 0.570000 ( 0.572334) hash : 0.550000 0.000000 0.550000 ( 0.558118) hash : 0.800000 0.010000 0.810000 ( 0.796961)
← предыдущие | следующие → |