Tools
Записки программиста, обо всем и ни о чем. Но, наверное, больше профессионального.
2012-07-31
July 30, 1947
Posted by Valentin at 03:08 0 comments
Labels: hero
2012-07-30
libnpjp2.so
$ fakeroot make-jpkg jre-7u5-linux-x64.tar.gz
Posted by Valentin at 02:55 0 comments
Labels: Java
2012-07-28
В тулбокс веб-разработчика
Posted by Valentin at 21:36 0 comments
Labels: web-develop
Продвинутый роутер
Posted by Valentin at 02:33 0 comments
Labels: internet provider, opensource
2012-07-27
Не всякому слову верь
PostgreSQL 8.4.1 (32-bit) + Windows Server 2003 Standard, Enterprise & Datacenter (32-bit); Supported Add-On: PostGIS 1.4.0
Лично мне пришлось вручную сделать tablespace; скопировать c:\Program Files\ArcGIS\ArcSDE\pgexe\pg841_st_lib\libst_raster_pg.dll c:\Program Files\ArcGIS\ArcSDE\pgexe\pg841_st_lib\st_geometry.dll в c:\PostgreSQL\8.4\lib\ скопировать c:\Program Files\ArcGIS\ArcSDE\pgexe\bin\sg.dll c:\Program Files\ArcGIS\ArcSDE\pgexe\bin\pe.dll в c:\PostgreSQL\8.4\bin и создать службу C:\Program Files\ArcGIS\ArcSDE\pgexe\bin> sdeservice -o create -H "c:\Program Files\ArcGIS\ArcSDE\pgexe" -d postgresql,postgresql-8.4 -p 12345678 -i esri_sde
Posted by Valentin at 02:56 0 comments
2012-07-25
Польза монетизации
Posted by Valentin at 17:13 0 comments
Labels: money
2012-07-24
MFP
- из положения Т-position, вы начинаете поворачивать голову, ища глазами то место откуда на вас дует ветер, вес тела на задней согнутой ноге
- вслед за поворотом головы поворачивают плечи и бедра, до положения пока грудь не будет развернута на нос доски, а передняя стопа развернута вдоль доски, касается мастфута внутренним сводом и пальцы ориентированы точно на нос доски
- расслабленная кисть передней руки подтягивает мачту к груди и удерживает в вертикальном положении, локоть передней руки направлен вниз, строго вниз, вы фокусируете свое внимание на локте
- продолжая смотреть на линию ветра, вы на ощупь, не глядя на парус, спокойно поднимаете расслабленную кисть задней руки к вашему заднему плечу
- спокойно положите вашу расслабленную заднюю кисть руки сверху на гик напротив вашего заднего плеча
- обе руки лежат на гике расслабленно, как на клавиатуре компьютера, большие пальцы сверху гика, локти направлены вертикально вниз, пальцы могут шевелиться, чтобы избежать излишне сильного зажимания гика
- если ветра мало и доска еще не начала движение, можем «подтолкнуть» доску к движению: еще сильнее потянем локти вниз, передняя кисть немного подаст мачту вперед к носу и на подветренный борт, задняя кисть потянет гик к себе, ноги немного сильнее согнуться, чтобы сохранить баланс при старте
- доска начнет двигаться и наберет ход, парус станет легче, можно немного выпрямиться и встать прямо и расслабленно, не отпуская мачту и гик далеко от себя
- передней рукой поддерживаем постоянное вертикальное положение мачты, расслабленная кисть тянет гик вертикально вниз, локоть тянет гик вертикально вниз
- задняя рука поддерживает постоянное давление на гик, расслабленная кисть задней руки тянет гик вниз и вперед к носу доски, локоть тянет гик вертикально вниз, гик должен быть в горизонтальной плоскости
- спина должна быть прямой, ноги сильно согнуты
- таким образом, мы не позволяем парусу «убегать» от нас на расстоянии вытянутой руки и нарушать наш баланс
- как только доска начнет двигаться и парус станет легким по ощущениям, вы можете встать в более естественную позу и выпрямить ноги и руки
Posted by Valentin at 23:09 2 comments
Геопроцессинг
Posted by Valentin at 03:11 0 comments
Labels: GIS
2012-07-23
Blender
Sculpting a Male Human Bust in Blender from CG Cookie on Vimeo.
Posted by Valentin at 01:16 4 comments
Labels: 3D
2012-07-22
Вот это портабельность
Posted by Valentin at 01:57 0 comments
Labels: development, web-browser
2012-07-20
6 лет назад
Простейший вариант веб сервера на Java
Установим сервлет-контейнер - Tomcat
Установка админской консоли
Конфигурация сервера (каталоги, порты, журналы,...)
Интеграция с веб-сервером Apache HTTPD
Включить поддержку SSL в Tomcat
Реализовать веб-приложение (сервлет)
Нам понадобится инструментарий
set PATH=P:\ant\bin;%PATH% set ANT_HOME=P:\ant set JAVA_HOME=P:\app\Java\jdk1.5.0_09 set CATALINA_HOME=P:\Tomcat5.5
Создание приложения
md sample\docs md sample\src\mypackage md sample\web\WEB-INF copy build.xml.template sample\build.xml
app.path=/VDemo1 catalina.home=P:/Tomcat5.5 manager.username=admin manager.password=123456789 manager.url=http://localhost:8080/manager
package mypackage; import java.io.*; import java.text.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; public class VExampleOne extends HttpServlet { public void doGet ( HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { String title = "My first app!"; response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>" + title + "</title>"); out.println("</head>"); out.println("<body bgcolor=\"white\">"); out.println("<h1>" + title + "</h1>"); out.println("</body>"); out.println("</html>"); } // doGet } // VExampleOne class |
<project name="My first webapp" default="compile" basedir="."> <property file="build.properties"/> <property name="app.name" value="VDemo1"/> <property name="app.path" value="/${app.name}"/> <property name="app.version" value="0.1-dev"/> <property name="build.home" value="${basedir}/build"/> <property name="catalina.home" value="P:/Tomcat5.5"/> <property name="dist.home" value="${basedir}/dist"/> <property name="docs.home" value="${basedir}/docs"/> <property name="manager.url" value="http://localhost:8080/manager"/> <property name="src.home" value="${basedir}/src"/> <property name="web.home" value="${basedir}/web"/> <taskdef name="deploy" classname="org.apache.catalina.ant.DeployTask"/> <taskdef name="list" classname="org.apache.catalina.ant.ListTask"/> <taskdef name="reload" classname="org.apache.catalina.ant.ReloadTask"/> <taskdef name="undeploy" classname="org.apache.catalina.ant.UndeployTask"/> <property name="compile.debug" value="true"/> <property name="compile.deprecation" value="false"/> <property name="compile.optimize" value="true"/> <path id="compile.classpath"> <pathelement location="${catalina.home}/common/classes"/> <fileset dir="${catalina.home}/common/endorsed"> <include name="*.jar"/> </fileset> <fileset dir="${catalina.home}/common/lib"> <include name="*.jar"/> </fileset> <pathelement location="${catalina.home}/shared/classes"/> <fileset dir="${catalina.home}/shared/lib"> <include name="*.jar"/> </fileset> </path> <target name="all" depends="clean,compile" description="Clean build and dist directories, then compile"/> <target name="clean" description="Delete old build and dist directories"> <delete dir="${build.home}"/> <delete dir="${dist.home}"/> </target> <target name="compile" depends="prepare" description="Compile Java sources"> <mkdir dir="${build.home}/WEB-INF/classes"/> <javac srcdir="${src.home}" destdir="${build.home}/WEB-INF/classes" debug="${compile.debug}" deprecation="${compile.deprecation}" optimize="${compile.optimize}"> <classpath refid="compile.classpath"/> </javac> <copy todir="${build.home}/WEB-INF/classes"> <fileset dir="${src.home}" excludes="**/*.java"/> </copy> </target> <target name="dist" depends="compile,javadoc" description="Create binary distribution"> <mkdir dir="${dist.home}/docs"/> <copy todir="${dist.home}/docs"> <fileset dir="${docs.home}"/> </copy> <jar jarfile="${dist.home}/${app.name}-${app.version}.war" basedir="${build.home}"/> </target> <target name="install" depends="compile" description="Install application to servlet container"> <deploy url="${manager.url}" username="${manager.username}" password="${manager.password}" path="${app.path}" localWar="file://${build.home}"/> </target> <target name="javadoc" depends="compile" description="Create Javadoc API documentation"> <mkdir dir="${dist.home}/docs/api"/> <javadoc sourcepath="${src.home}" destdir="${dist.home}/docs/api" packagenames="*"> <classpath refid="compile.classpath"/> </javadoc> </target> <target name="list" description="List installed applications on servlet container"> <list url="${manager.url}" username="${manager.username}" password="${manager.password}"/> </target> <target name="prepare"> <mkdir dir="${build.home}"/> <mkdir dir="${build.home}/WEB-INF"/> <mkdir dir="${build.home}/WEB-INF/classes"/> <copy todir="${build.home}"> <fileset dir="${web.home}"/> </copy> <mkdir dir="${build.home}/WEB-INF/lib"/> </target> <target name="reload" depends="compile" description="Reload application on servlet container"> <reload url="${manager.url}" username="${manager.username}" password="${manager.password}" path="${app.path}"/> </target> <target name="remove" description="Remove application on servlet container"> <undeploy url="${manager.url}" username="${manager.username}" password="${manager.password}" path="${app.path}"/> </target> </project> |
<?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <display-name>First VS Java webapp</display-name> <description> Simple example of Java webapp. </description> <servlet> <servlet-name>VDemo1Servlet1</servlet-name> <servlet-class>mypackage.VExampleOne</servlet-class> </servlet> <servlet-mapping> <servlet-name>VDemo1Servlet1</servlet-name> <url-pattern>/servlet1</url-pattern> </servlet-mapping> </web-app> |
Установка приложения в Tomcat
rem установки переменных я приводить больше не буду, примем "по умолчанию": set PATH=P:\ant\bin;%PATH% set ANT_HOME=P:\ant set JAVA_HOME=P:\app\Java\jdk1.5.0_09 set CATALINA_HOME =P:\Tomcat5.5 pushd sample start "compile" /wait cmd.exe /k ant all |
pushd sample start "remove" /wait cmd.exe /c ant remove start "install" /wait cmd.exe /k ant install
Масштабируем, сервер приложений
Терминология, понятия
Коллекция ссылок по теме
Posted by Valentin at 19:43 0 comments
Labels: Java
Ветер
Posted by Valentin at 03:04 6 comments
Labels: holyday
2012-07-18
Почта
Posted by Valentin at 03:56 0 comments
Labels: gov.ru
2012-07-17
XML
>>> from StringIO import StringIO >>> out = StringIO() >>> xml = XmlWriter(out) >>> xml.addNamespace("xhtml", "http://www.w3.org/1999/xhtml") >>> xml.startTag("xhtml:html") >>> xml.startTag("xhtml:body") >>> xml.text("Hello world!") >>> xml.tag("xhtml:img", {"src": "smile.png", "alt": ":-)"}) >>> xml.endTag() >>> xml.endTag() >>> xml.close() >>> print out.getvalue().rstrip("\r\n") <?xml version="1.0" encoding="utf-8"?> <xhtml:html xmlns:xhtml="http://www.w3.org/1999/xhtml"> <xhtml:body> Hello world! <xhtml:img alt=":-)" src="smile.png" /> </xhtml:body> </xhtml:html> |
Posted by Valentin at 01:49 10 comments
2012-07-16
Покатушки
Posted by Valentin at 01:19 2 comments
Labels: holyday
2012-07-15
Кроссплатформность
Posted by Valentin at 01:30 0 comments
Labels: citation
2012-07-14
Magic
class NewMetaChain(type):
def __new__(cls,name,bases,dict):
old = dict.get('__setattr__',object.__setattr__)
def wrap(fn,inst=None):
def new(*args,**kwargs):
ans = fn(*args,**kwargs)
return ans if ans!=None else inst or args[0]
return new
special = dir(cls)
for item, fn in dict.items():
if item not in special and isinstance(fn,FunctionType):
dict[item] = wrap(fn)
def new_setattr(inst,item,val):
if isinstance(val,FunctionType):
val = wrap(val,inst)
return old(inst,item,val)
dict['__setattr__'] = new_setattr
return type.__new__(cls,name,bases,dict)
class UsefulClass4():
__metaclass__ = NewMetaChain
def __setattr__(self,item,val):
if val == 172: val = "giza"
object.__setattr__(self, item, val)
val = 1
def add(self,val): self.val += val
def mul(self,val): self.val *= val
def nul(self): pass
Помимо того что мы теперь при каждом вызове не оборачиваем методы (что дало ~30% прироста в скорости), мы ещё проводим необходимые проверки не на каждом считывании полей объекта, а на каждой записи (что происходит реже). Если запись отсутствует — работает так же быстро как и способ с декораторами.
Posted by Valentin at 01:44 0 comments
Labels: python
2012-07-13
Snow Crash
Posted by Valentin at 03:49 2 comments
2012-07-11
Time
Posted by Valentin at 21:47 0 comments
Labels: python
2012-07-10
Pyquery
Posted by Valentin at 22:02 0 comments
Labels: python
BinaryString
Posted by Valentin at 03:05 0 comments
Labels: JS, web-develop
2012-07-09
reStructuredText
Posted by Valentin at 03:18 0 comments
2012-07-08
Муки выбора
Posted by Valentin at 01:14 2 comments
2012-07-06
Прекрасная простота
Posted by Valentin at 01:01 0 comments
Labels: citation, opensource
2012-07-04
Жизнь UPS-а
Posted by Valentin at 17:34 2 comments
Labels: hardware
2012-07-03
Product vs Framework
Posted by Valentin at 21:28 0 comments
Labels: frameworks, python, web-develop
Архив блога
-
▼
2012
(275)
-
▼
июля
(28)
- July 30, 1947
- libnpjp2.so
- В тулбокс веб-разработчика
- Продвинутый роутер
- Не всякому слову верь
- Польза монетизации
- MFP
- Геопроцессинг
- Blender
- Вот это портабельность
- 6 лет назад
- Ветер
- Почта
- XML
- Покатушки
- Кроссплатформность
- Magic
- Snow Crash
- Time
- Pyquery
- BinaryString
- reStructuredText
- Муки выбора
- Прекрасная простота
- Жизнь UPS-а
- Product vs Framework
- SSH: Roaming not allowed by server
- Жестокий и беспощадный
-
▼
июля
(28)