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 newspecial = 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_setattrreturn type.__new__(cls,name,bases,dict)class UsefulClass4():__metaclass__ = NewMetaChaindef __setattr__(self,item,val):if val == 172: val = "giza"object.__setattr__(self, item, val)val = 1def add(self,val): self.val += valdef mul(self,val): self.val *= valdef 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)


