<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4782981620644831943</id><updated>2012-02-16T04:22:26.875-08:00</updated><category term='c#'/><category term='linux'/><category term='CruiseControl.NET'/><category term='unsorted ramblings'/><category term='FAKE'/><category term='NAnt'/><category term='MSBuild'/><category term='Techblog'/><category term='en'/><category term='konnekt'/><category term='gadgets'/><category term='.NET'/><title type='text'>skolima</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>90</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-8083640817468414436</id><published>2012-02-06T12:12:00.000-08:00</published><updated>2012-02-06T12:14:28.293-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='en'/><category scheme='http://www.blogger.com/atom/ns#' term='MSBuild'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><category scheme='http://www.blogger.com/atom/ns#' term='NAnt'/><category scheme='http://www.blogger.com/atom/ns#' term='FAKE'/><title type='text'>Build systems for the .NET Framework</title><content type='html'>&lt;P&gt;When on 13th of February 2002 Microsoft released the first stable version of the .NET Framework,the ecosystem lacked an officially supported build platform. However, since early betas wereavailable short after July 2000 Professional Developers Conference, a native solution – &lt;A HREF="http://nant.sourceforge.net/"&gt;NAnt&lt;/A&gt; – emerged in August 2001,three months before the framework itself became officially available. But it was not until7th of November 2005 that Microsoft presented it’s own tool : &lt;A HREF="http://msdn.microsoft.com/en-us/library/dd393574.aspx "&gt;MSBuild&lt;/A&gt;. For two years the competingsystems coexisted in the .NET world, as MSBuild was a new, and relatively unpolished, product. When on 19thof November 2007 a second version of MSBuild (labeled 3.5, to match the .NET Framework versionit accompanied) was released, it brought multiple improvements that developers have asked for. The community’s focus switchedfrom NAnt to the Microsoft solution, and NAnt 0.86-beta1, released on 8th of December 2007, was the last releasefor almost three years. Although NAnt development started again in April 2010, this long stagnationhas led many of it’s previous users to believe the Open Source solution to be abandoned.&lt;/P&gt;&lt;P&gt;MSBuild 4.0 offers multiple improvements over NAnt: it ships with packaged Target files for commonly used project types,in accordance with “convention over configuration” paradigm; it has an ever-growing collection of community Taskswhich perform various commonly executed build operations; it supports parallel builds; it integrates withTeam Build (a &lt;I&gt;Continuous Integration&lt;/I&gt; component of Microsoft Team Foundation Server) and other CI systems;and most importantly, it is used internally by Visual Studio, which presents most build options through a graphical user interface– developers creating a build project with the help of an IDE may not even be aware that MSBuild is being used underneath.&lt;/P&gt;&lt;P&gt;Nowadays MSBuild is the &lt;I&gt;de facto&lt;/I&gt; standard tool for build automation in the .NET ecosystem. However, multipleprojects still employ a legacy NAnt build system – the main problems preventing migration being complexity of theexisting build infrastructure and supporting &lt;A HREF="http://www.mono-project.com/Main_Page"&gt;Mono&lt;/A&gt;, which, until 2.4 (released on 8th of December 2009),lacked an MSBuild implementation. Although the Mono version of MSBuild 3.5 is now relatively complete,version 4.0 is still virtually non-existent.&lt;/P&gt;&lt;!--TOC section Existing Solutions--&gt;&lt;H4&gt;Pre-existing Solutions&lt;/H4&gt;&lt;!--SEC END --&gt;&lt;P&gt;Apart from the two already mentioned build platforms, there are several others. The first of them, dating way back into the Unix times, is called Autotools, officially known as the &lt;A HREF="http://www.gnu.org/s/hello/manual/automake/GNU-Build-System.html"&gt;GNU Build System&lt;/A&gt;. The core of Autotools – make – was released in 1997. Although this system is widely used by projects developed in &lt;I&gt;C&lt;/I&gt; or &lt;I&gt;C++&lt;/I&gt;, such as the Mono runtime engine, it has no built-in support for .NET specific compilers, requiring a large amount of custom per-project work by developers. It also has a reputation of being convoluted and unfriendly, although extremely powerful.&lt;/P&gt;&lt;P&gt;Developers and users of other build system, such as &lt;A HREF="http://www.cmake.org/"&gt;CMake&lt;/A&gt;, Ant or Maven, had on numerous occasions undertaken efforts to enhance .NET support. Especially Maven community has spawned numerous .NET-targeted clones – &lt;A HREF="http://incubator.apache.org/npanday/"&gt;NPanday&lt;/A&gt;, &lt;A HREF="http://byldan.codeplex.com/"&gt;Byldan&lt;/A&gt;, &lt;A HREF="http://incubator.apache.org/nmaven/"&gt;NMaven&lt;/A&gt; – none of which has gained any traction. The only exception seems to be maven-dotnet-plugin, which delegates the build process back to MSBuild.&lt;/P&gt;&lt;P&gt;An interesting new tool that is worth mentioning is &lt;A HREF="https://github.com/forki/FAKE"&gt;FAKE – F# Make&lt;/A&gt;. Although still very much an experimental project, started on 30th of March 2009, this tool is under active development by several contributors. It borrows heavily from ideas explored by &lt;A HREF="http://rake.rubyforge.org/"&gt;Rake&lt;/A&gt; (written in and for the needs of projects in the ruby language), and allows users to describe the build process configuration in the same language they are using to write their code.&lt;/P&gt;&lt;!--TOC section Problem Statement and Goals--&gt;&lt;P&gt;This post looks in depth at three existing build platforms employed on the .NET Framework: NAnt – which used to be the &lt;I&gt;de facto&lt;/I&gt; standard, Microsoft Build – the officially supported tool, and FAKE – an interesting build tool employing an entirely different build description paradigm.&lt;/P&gt;&lt;P&gt;All three tools present the same basic functionality of a build platform: a project file contains tasks, enclosed in targets, which may have specified dependencies upon other targets. During the build process, those targets are first sorted topologically and then tasks within each target are executed in sequence. However, the structure of a project file differs greatly between tools.&lt;/P&gt;&lt;!--TOC section NAnt--&gt;&lt;H4&gt;NAnt&lt;/H4&gt;&lt;!--SEC END --&gt;&lt;P&gt;&lt;A ID="ch:nant"&gt;&lt;/A&gt;&lt;/P&gt;&lt;P&gt;When Stefan Bodewig announced first official Ant release on 19th July 2000, the project already had undergone over a year of public development as part of the Tomcat servlet container, and had been used for a year before that as an internal tool at Sun Microsystems (under the name &lt;EM&gt;Another Neat Tool&lt;/EM&gt;). In August 2001, Gerry Shaw made a decision to base the new .NET build platform on the existing Ant file syntax (initial code for .NET Beta 1 Ant clone was written by David Buksbaum of Hazware and released under the name of XBuild). Keeping with the open source tradition of self-recursive names, he aptly named this new tool NAnt, from &lt;EM&gt;NAnt is not Ant&lt;/EM&gt;.&lt;/P&gt;&lt;P&gt;After almost ten years of separate development, NAnt’s &lt;CODE&gt;Project.build&lt;/CODE&gt; is still difficult to distinguish from Ant’s &lt;CODE&gt;build.xml&lt;/CODE&gt; file; the only obvious giveaway being the use of C#’s &lt;CODE&gt;csc&lt;/CODE&gt; compiler task instead of Java’s &lt;CODE&gt;javac&lt;/CODE&gt;. An absolutely minimal working NAnt build file looks as follows:&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;&amp;lt;project default="build"&amp;gt;&lt;br /&gt;  &amp;lt;target name="build"&amp;gt;&lt;br /&gt;    &amp;lt;csc target="exe" output="Hello.exe"&amp;gt;&lt;br /&gt;      &amp;lt;sources&amp;gt;&lt;br /&gt;        &amp;lt;include name="*.cs" /&amp;gt;&lt;br /&gt;      &amp;lt;/sources&amp;gt;&lt;br /&gt;    &amp;lt;/csc&amp;gt;&lt;br /&gt;  &amp;lt;/target&amp;gt;&lt;br /&gt;&amp;lt;/project&amp;gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;This short example contains a single target (&lt;CODE&gt;build&lt;/CODE&gt;), which in turn contains a single task, with a simple nested fileset. Executing this file starts the default target, which invokes the &lt;I&gt;csc&lt;/I&gt; task to compile the code using the appropriate C# compiler.&lt;/P&gt;&lt;P&gt;NAnt projects consist of several basic entities: task, types, properties, functions and loggers. Tasks wrap fundamental operations, such as copying a file, performing source control operations or invoking the compiler. Types represent strongly typed parameters, are aware of their content and validate their correctness on creation. A fileset is perhaps the most often used type – it is a lazily evaluated collection of files (the &lt;I&gt;sources&lt;/I&gt; element in the example above is a fileset). Properties can be used for storing text values that are used multiple times. They are evaluated in the place of their declaration. Functions, along with operators, can be used in any attribute value, and are evaluated when the attribute is read (usually upon task execution). Loggers are usually employed for reporting build progress to the user through various front-ends, but can also serve for tracking project execution for other purposes. NAnt ships with a large collection of predefined elements, additional ones can be either loaded from external assemblies or defined in-line using a &lt;I&gt;script&lt;/I&gt; task. Scripts can be written in any .NET language that has a &lt;CODE&gt;System.CodeDom.Compiler.CodeDomProvider&lt;/CODE&gt; available.&lt;/P&gt;&lt;P&gt;A more advanced example, showing properties, functions and global tasks (not enclosed inside a target):&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;&amp;lt;project&amp;gt;&lt;br /&gt;  &amp;lt;property name="is-mono"&lt;br /&gt;    value="${string::contains(framework::get-target-framework(), 'mono')}" /&amp;gt;&lt;br /&gt;  &amp;lt;property name="runtime-engine"&lt;br /&gt;    value="${framework::get-runtime-engine(framework::get-target-framework()) }" /&amp;gt;&lt;br /&gt;  &amp;lt;echo message="Checking Mono version" if="${is-mono}"/&amp;gt;&lt;br /&gt;  &amp;lt;exec program="${runtime-engine}" commandline="-V" if="${is-mono}" /&amp;gt;&lt;br /&gt;  &amp;lt;echo message="Using non-Mono runtime engine: '${runtime-engine}'"&lt;br /&gt;    unless="${is-mono}" /&amp;gt;&lt;br /&gt;&amp;lt;/project&amp;gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;Global tasks are always executed in the order they are declared and are used for setting up the project. Functions and properties are evaluated inside &lt;CODE&gt;${}&lt;/CODE&gt; blocks, they can be distinguished by the fact that functions use &lt;CODE&gt;::&lt;/CODE&gt; to separate the prefix from the function name. Also visible in this example are the &lt;I&gt;if&lt;/I&gt; and &lt;I&gt;unless&lt;/I&gt; attributes which are available on every task and are used for conditional task execution.&lt;/P&gt;&lt;P&gt;While NAnt inherited Ant’s mature syntax, along with such brilliant constructs as a distinction between &lt;CODE&gt;*&lt;/CODE&gt; (match in current directory) and &lt;CODE&gt;**&lt;/CODE&gt; (recursive directory match) for file inclusion/exclusion, it also inherited Ant’s deficiencies. The most glaring one is the inherent single threaded nature of the build process – although the engine itself can be relatively easily extended to invoke targets in &lt;A HREF="https://github.com/skolima/NAnt-new/tree/parallel"&gt;parallel&lt;/A&gt;, existing build files rely on targets being executed sequentially.&lt;/P&gt;&lt;!--TOC section Microsoft Build--&gt;&lt;H4&gt;Microsoft Build&lt;/H4&gt;&lt;!--SEC END --&gt;&lt;P&gt;&lt;A ID="ch:microsoft-build"&gt;&lt;/A&gt;&lt;/P&gt;&lt;P&gt;MSBuild 2.0 (releases are numbered after the Microsoft .NET Framework they accompany, thus the first release is labeled 2.0, second – 3.5 and third – 4.0) was released on the 7th of November, 2005, as part of the Microsoft .NET 2.0 release. It came bundled as the default build tool for Visual Studio 2005. MSBuild’s initial design was similar to NAnt’s, but because at that time company policy forbade Microsoft employees from looking at the implementation of open source solutions (in order to prevent intellectual property violation claims), it does differ in many subtle ways.&lt;/P&gt;&lt;P&gt;Visual Studio 2005 used Microsoft Build for compiling C# and Visual Basic projects, all other solution types were still handled by the built-in mechanisms inherited from the 2003 release. Before version 2.0 MSBuild was not used internally by Microsoft, but as soon as it had reached the &lt;EM&gt;Release To Manufacturing&lt;/EM&gt; stage, intense build process conversion effort has been launched, and by the early November 2005 it was already building about 40% of the Visual Studio project itself. This internal version added support for parallel builds (released to the general audience on 19th November 2007 as 3.5) and compiled all types of projects available in Visual Studio, including &lt;I&gt;Visual C++&lt;/I&gt; (this last feature was released on 12th April 2010 as part of 4.0 version). Another important improvement released with Visual Studio 2010 was a graphical debugging tool.&lt;/P&gt;&lt;P&gt;A minimalistic MSBuild’s &lt;CODE&gt;Project.proj&lt;/CODE&gt; looks as follows:&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;&amp;lt;Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"&lt;br /&gt;  DefaultTargets="Build"&amp;gt;&lt;br /&gt;  &amp;lt;Target Name="Build"&amp;gt;&lt;br /&gt;    &amp;lt;ItemGroup&amp;gt;&lt;br /&gt;      &amp;lt;Compile Include="*.cs" /&amp;gt;&lt;br /&gt;    &amp;lt;/ItemGroup&amp;gt;&lt;br /&gt;    &amp;lt;CSC Sources="@(Compile)" OutputAssembly="Hello.exe"/&amp;gt;&lt;br /&gt;  &amp;lt;/Target&amp;gt;&lt;br /&gt;&amp;lt;/Project&amp;gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;Although a different naming convention is used (uppercase identifiers instead of lowercase), this file shows great similarity to NAnt’s &lt;I&gt;Project.build&lt;/I&gt;. It contains a single target, which in turn contains an item group and a task. The namespace definition is required and uses the same schema regardless of the MSBuild version. Executing this file starts the default target, named &lt;I&gt;Build&lt;/I&gt;, which calls the &lt;I&gt;CSC&lt;/I&gt; task to compile the code. File collections (and item groups in general) can be declared at target or project level, but (unlike NAnt) cannot be nested inside tasks (some tasks allow for embedding item groups and property groups, but this is rare behavior). Prior to version 4.0, items could not be modified once declared.&lt;/P&gt;&lt;P&gt;Despite being a valid MSBuild file, the above example would not be recognized by Visual Studio (and by most .NET developers). Instead of requiring the user to describe the whole build process verbosely, MSBuild offers &lt;CODE&gt;.target&lt;/CODE&gt; files which allow “convention over configuration” approach to build process : user only specifies those settings and actions that differ from the default ones. MSBuild projects use &lt;CODE&gt;.proj&lt;/CODE&gt; extension for generic build scripts, and language-specific extensions are used for files importing specific &lt;CODE&gt;.target&lt;/CODE&gt;s (for example &lt;CODE&gt;.csproj&lt;/CODE&gt; for C# projects). Thus, a minimal &lt;CODE&gt;Project.csproj&lt;/CODE&gt; might be written as:&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;&amp;lt;Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"&amp;gt;&lt;br /&gt;  &amp;lt;ItemGroup&amp;gt;&lt;br /&gt;    &amp;lt;Compile Include="*.cs" /&amp;gt;&lt;br /&gt;  &amp;lt;/ItemGroup&amp;gt;&lt;br /&gt;  &amp;lt;Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /&amp;gt;&lt;br /&gt;&amp;lt;/Project&amp;gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;By replacing an explicit invocation of the &lt;I&gt;CSC&lt;/I&gt; task with an &lt;I&gt;Import&lt;/I&gt; directive, this file inherits the whole build pipeline defined for Visual Studio, including automatic dependency tracking (should one declare &lt;I&gt;Reference&lt;/I&gt; items), graphical user interface for configuring the build, targets for cleaning and rebuilding the assembly, and standardized extension points.&lt;/P&gt;&lt;P&gt;Basic entities in a MSBuild project are properties, items and tasks. Properties represent simple values. Items are untyped key-value collections, mostly used to represent files. Both types are evaluated as soon as they are encountered. They must be wrapped in groups, but this only allows them to share a &lt;I&gt;Condition&lt;/I&gt;: properties cannot be bundled and items are always grouped by name (in the example above the &lt;I&gt;ItemGroup&lt;/I&gt; generates items named &lt;I&gt;Compile&lt;/I&gt;, one for each matching file). MSBuild has a mechanism named &lt;I&gt;batching&lt;/I&gt; that splits items sharing a name according to a specified metadata value – when this is used, a task defined once will be executed for each batch of items separately. Item definitions allow setting default item metadata values. MSBuild, like NAnt, distinguishes between &lt;CODE&gt;*&lt;/CODE&gt; (match inside current folder) and &lt;CODE&gt;**&lt;/CODE&gt; (recursive directory match). Loggers can be used for tracking project execution, but they must be attached from command line. There is a quite extensive task collection available out of the box, many of them are direct replacements for NAnt tasks. Since 4.0 it is also possible to define a task in-line with the help of &lt;A HREF="http://msdn.microsoft.com/en-us/library/t41tzex2.aspx"&gt;&lt;I&gt;UsingTask&lt;/I&gt;&lt;/A&gt;.&lt;/P&gt;&lt;P&gt;An example of using functions for evaluating task conditions (this example does not work as of Mono 2.10 because functions are still not implemented):&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;&amp;lt;Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"&lt;br /&gt;  InitialTargets="Info"&amp;gt;&lt;br /&gt;  &amp;lt;PropertyGroup&amp;gt;&lt;br /&gt;    &amp;lt;IsMono&amp;gt;$(MSBuildBinPath.Contains('mono'))&amp;lt;/IsMono&amp;gt;&lt;br /&gt;    &amp;lt;RuntimeEngine&amp;gt;$(MSBuildBinPath)/../../../bin/mono&amp;lt;/RuntimeEngine&amp;gt;&lt;br /&gt;  &amp;lt;/PropertyGroup&amp;gt;&lt;br /&gt;  &amp;lt;Target Name="Info"&amp;gt;&lt;br /&gt;    &amp;lt;Message Text="Checking Mono version" Condition="$(IsMono)"/&amp;gt;&lt;br /&gt;    &amp;lt;Exec Command="$(RuntimeEngine) -V" Condition="$(IsMono)"/&amp;gt;&lt;br /&gt;    &amp;lt;Message Text="Using non-Mono runtime engine: '$(MSBuildBinPath)'"&lt;br /&gt;      Condition="!$(IsMono)"/&amp;gt;&lt;br /&gt;  &amp;lt;/Target&amp;gt;&lt;br /&gt;&amp;lt;/Project&amp;gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;Property values and functions are evaluated inside &lt;CODE&gt;$()&lt;/CODE&gt; blocks, basic operators (such as &lt;CODE&gt;==&lt;/CODE&gt;) are also recognized outside of those markers. &lt;CODE&gt;@()&lt;/CODE&gt; syntax is used for referencing collections of items and &lt;CODE&gt;%()&lt;/CODE&gt; triggers the batching mode using item metadata. MSBuild 4.0 is keeping track of the actual underlying type of each property value and is able to invoke any .NET instance methods defined on such an object – however, because of security concerns, only methods marked as safe (number/date/string/version manipulation and file system read-only access) are available in scripts (this security mechanism can be disabled by setting the environment variable &lt;CODE&gt;MSBUILDENABLEALLPROPERTYFUNCTIONS&lt;/CODE&gt; to 1). The syntax for method invocation comes from PowerShell – instance methods are called with a simple &lt;CODE&gt;Value.Method()&lt;/CODE&gt;, while static methods can be invoked with &lt;CODE&gt;[Full.Type.Name]::Method()&lt;/CODE&gt;.&lt;/P&gt;&lt;P&gt;The MSBuild syntax draws heavily from NAnt and should feel quite familiar for any developer once one grasps how items differ from NAnt’s strongly typed collections. The tool is under active development, has extensive support from both Microsoft and the community, and – since Mono 2.4 was released on 8th of December 2009 – is usable as a cross-platform build system.&lt;/P&gt;&lt;!--TOC section FAKE--&gt;&lt;H4&gt;FAKE&lt;/H4&gt;&lt;!--SEC END --&gt;&lt;P&gt;Fake was published by Steffen Forkmann on the 1st of April, 2009. His goal was to create a build platform using the same language he wrote his programs in – F# (this trend is also observed in Ruby, Python and other languages which allow executable domain-specific languages to be defined at the language level). Three years later, Fake still remains more of an academic exercise than a widely deployed tool, but it does explore a very interesting approach to build management. Fake executes its scripts through the F# interpreter, extending the syntax of the language with three simple additions:defining build steps (&lt;CODE&gt;Target? TargetName&lt;/CODE&gt;),declaring coupling between targets (&lt;CODE&gt;For? TargetName &amp;lt;- Dependency? AnotherTargetName&lt;/CODE&gt;) and specification of default targets (&lt;CODE&gt;Run? TargetName&lt;/CODE&gt;). &lt;/P&gt;&lt;P&gt;A basic &lt;CODE&gt;build.fsx&lt;/CODE&gt; might look as shown in the listing below:&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;#I @"tools\FAKE"&lt;br /&gt;#r "FakeLib.dll"&lt;br /&gt;&lt;B&gt;open&lt;/B&gt; Fake&lt;br /&gt;&lt;br /&gt;Target? Default &amp;lt;-&lt;br /&gt;  &lt;B&gt;fun&lt;/B&gt; _ -&amp;gt;&lt;br /&gt;    &lt;B&gt;let&lt;/B&gt; appReferences  = !+ @"**.csproj" |&amp;gt; Scan&lt;br /&gt;    &lt;B&gt;let&lt;/B&gt; apps = MSBuildRelease @".\build\" "Build" appReferences&lt;br /&gt;    Log "AppBuild-Output: " apps&lt;br /&gt;&lt;br /&gt;Run? Default&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;First three lines import the &lt;CODE&gt;Fake&lt;/CODE&gt; namespace from the &lt;CODE&gt;FakeLib.dll&lt;/CODE&gt; file in directory &lt;CODE&gt;tools\FAKE&lt;/CODE&gt;. Following them is a target definition, with a fileset wildcard match pipelined (using F#’s &lt;CODE&gt;|&amp;gt;&lt;/CODE&gt; operator) to the Scan function, then a &lt;CODE&gt;MSBuildRelease&lt;/CODE&gt; task invocation, log output, and finally – declaration of the default target. It should be noted here that Fake does not have built-in tasks for compiling code – it relies on the presence of MSBuild instead. There is also no need for a special in-line task definition syntax, as arbitrary F# code can be embedded anywhere in the script. This can be seen in the following example:&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;#I @"tools\FAKE"&lt;br /&gt;#r "FakeLib.dll"&lt;br /&gt;&lt;B&gt;open&lt;/B&gt; Fake&lt;br /&gt;&lt;B&gt;open&lt;/B&gt; System&lt;br /&gt;&lt;br /&gt;&lt;B&gt;let&lt;/B&gt; isMono = Type.GetType ("Mono.Runtime") &amp;lt;&amp;gt; null&lt;br /&gt;&lt;B&gt;let&lt;/B&gt; stringType = Type.GetType ("System.String")&lt;br /&gt;&lt;B&gt;let&lt;/B&gt; corlibLocation = IO.GetDirectoryName (stringType.Assembly.Location)&lt;br /&gt;&lt;B&gt;let&lt;/B&gt; notMono = String.Format("Using non-Mono runtime engine: {0}", corlibLocation)&lt;br /&gt;&lt;br /&gt;Target? Info &amp;lt;-&lt;br /&gt;  &lt;B&gt;fun&lt;/B&gt; _ -&amp;gt;&lt;br /&gt;    &lt;B&gt;if&lt;/B&gt; isMono &lt;B&gt;then&lt;/B&gt;&lt;br /&gt;      trace "Running on Mono"&lt;br /&gt;    &lt;B&gt;else&lt;/B&gt;&lt;br /&gt;      trace notMono&lt;br /&gt;&lt;br /&gt;Run? Info&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;The keyword &lt;CODE&gt;let&lt;/CODE&gt; declares a F# variable, which is equivalent to property declarations used by NAnt and MSBuild. However, unlike those two tools, Fake allows the developer to invoke any .NET method, without security contraints.&lt;/P&gt;&lt;P&gt;As an experimental project, Fake does have some shortcomings. It does not execute its targets in parallel, although the code inside them can be easily parallelized. It also does not keep track of a target’s outputs up-to-date state, executing the target commands during every project rebuild, which makes it unsuitable for large projects. There is no support for using Fake under operating system other than Windows. And the F# language itself still remains exotic to most .NET developers, making the build scripts hard to understand and maintain.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-8083640817468414436?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/8083640817468414436/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2012/02/build-systems-for-net-framework.html#comment-form' title='Komentarze (3)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/8083640817468414436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/8083640817468414436'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2012/02/build-systems-for-net-framework.html' title='Build systems for the .NET Framework'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-5801915114617931446</id><published>2012-01-18T12:21:00.001-08:00</published><updated>2012-01-19T08:50:57.392-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CruiseControl.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='en'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><category scheme='http://www.blogger.com/atom/ns#' term='Techblog'/><title type='text'>Upgrading from CruiseControl.NET 1.5 to 1.6 / 1.7</title><content type='html'>&lt;p&gt;I've finally decided to update the version of &lt;a href="http://www.cruisecontrolnet.org/projects/ccnet/wiki"&gt;CruiseControl.NET&lt;/a&gt; I use, going from 1.5 straight to 1.7 nightly build. My previous attempt ended with cryptic error messages, but, as this time the build server was already having some problems and required maintenance, I went through with the update (&lt;b&gt;after&lt;/b&gt; fixing the problems first, of course).&lt;/p&gt;&lt;p&gt;Most important thing, if you don't already know it: there's a validator included in the downloadable package, which you can use to check how the server will interpret your pretty configuration files spaghetti. If you are making use of the &lt;a href="http://www.cruisecontrolnet.org/projects/ccnet/wiki/Configuration_Preprocessor"&gt;pre-processor&lt;/a&gt; feature - the validator is indispensable. A neat trick while using it is copying the output (processed) configuration, changing the input files and copying the new output to a separate file, then running diff on those two to check whether the actual change you just introduced is what you were intending to do. In my case - I was checking whether I got exactly the &lt;b&gt;same&lt;/b&gt; output while using a two-years-newer release by running my original configuration through the 1.5 validator and trying to get identical results from the 1.7 parser.&lt;br /&gt;The initial result you'll get will most likely be this:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;Unused node detected: xmlns:cb="urn:ccnet.config.builder"&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Oh. Not good. &lt;a href="http://stackoverflow.com/q/2843506/3205"&gt;StackOverflow&lt;/a&gt; has an answer that claims to fix this problem, only to result in this:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;Unused node detected: xmlns="http://thoughtworks.org/ccnet/1/5"&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Well - not exactly a change for the better.&amp;nbsp; What is the problem? The changes in the configuration parser made it a bit more picky about the files it accepts. Now they have to start with the XML preamble and include the version information (1.5 or 1.6, there's no 1.7 schema yet). The required beginning of the main configuration file is now as follows:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&amp;lt;cruisecontrol xmlns:cb="urn:ccnet.config.builder"&lt;br /&gt;xmlns="http://thoughtworks.org/ccnet/1/5"&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Also, while 1.5 allowed you to include files containing a "naked" node (e.g. to reuse svn version control configuration), 1.6 requires the top level node in the included file to be either a &lt;code&gt;&amp;lt;cb:config-template&amp;gt;&lt;/code&gt; or &lt;code&gt;&amp;lt;cb:scope&amp;gt;&lt;/code&gt;. Thus, to be on the safe side, start each of your configuration sub-files with the following:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&amp;lt;cb:config-template xmlns:cb="urn:ccnet.config.builder"&lt;br /&gt;xmlns="http://thoughtworks.org/ccnet/1/5"&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;With those changes in place, my configuration file results in the same pre-processor output both in CruiseControl.NET 1.5 and 1.7.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-5801915114617931446?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/5801915114617931446/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2012/01/upgrading-from-cruisecontrolnet-15-to_18.html#comment-form' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/5801915114617931446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/5801915114617931446'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2012/01/upgrading-from-cruisecontrolnet-15-to_18.html' title='Upgrading from CruiseControl.NET 1.5 to 1.6 / 1.7'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-810431949097578523</id><published>2009-05-08T08:24:00.006-07:00</published><updated>2012-01-19T08:50:57.443-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='en'/><category scheme='http://www.blogger.com/atom/ns#' term='unsorted ramblings'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>D'oh!</title><content type='html'>&lt;p&gt;I just spent two hours blaming &lt;a href="ccnet.thoughtworks.com"&gt;CruiseControl.Net&lt;/a&gt; release candidate for a bug, which turned out to be a trailing &lt;code&gt;\&lt;/code&gt; in my configuration.&lt;p/&gt;&lt;br/&gt;&lt;p&gt;So remember, kids: &lt;code&gt;nant -D:publishroot="E:\PublicBuilds\" publishbuild&lt;/code&gt; will invoke nant with the default target. To make it work as expected, one has to use &lt;code&gt;nant -D:publishroot="E:\PublicBuilds\\" publishbuild&lt;/code&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-810431949097578523?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/810431949097578523/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2009/05/d_9230.html#comment-form' title='Komentarze (2)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/810431949097578523'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/810431949097578523'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2009/05/d_9230.html' title='D&amp;#39;oh!'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-2889462884394617163</id><published>2008-08-25T03:44:00.006-07:00</published><updated>2012-01-19T08:50:57.305-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='en'/><category scheme='http://www.blogger.com/atom/ns#' term='gadgets'/><category scheme='http://www.blogger.com/atom/ns#' term='Techblog'/><title type='text'>Using a cellphone GPRS/EDGE/UMTS Internet connection through Bluetooth
under Gentoo Linux</title><content type='html'>&lt;p&gt;Before you start, make sure that:&lt;/p&gt;&lt;br/&gt;&lt;ul&gt;&lt;br/&gt;&lt;li&gt;you can browse the Internet from your cellphone (take note of the connection profile you use)&lt;/li&gt;&lt;br/&gt;&lt;li&gt;you have a working &lt;a href="http://www.gentoo.org/doc/en/bluetooth-guide.xml"&gt;Bluetooth connection between your phone and the PC&lt;/a&gt;&lt;/li&gt;&lt;br/&gt;&lt;li&gt;the devices are paired for connecting without asking for confirmation&lt;/li&gt;&lt;br/&gt;&lt;li&gt;you have bluez-utils emerged with &lt;code&gt;USE="old-daemons"&lt;/code&gt;&lt;/li&gt;&lt;br/&gt;&lt;/ul&gt;&lt;p&gt;Configure a RFCOMM connection with the phone:&lt;/p&gt;&lt;br/&gt;&lt;ul&gt;&lt;br/&gt;&lt;li&gt;in &lt;code&gt;/etc/conf.d/bluetooth&lt;/code&gt; set &lt;code&gt;RFCOMM_ENABLE=true&lt;br/&gt;&lt;/code&gt;&lt;/li&gt;&lt;br/&gt;&lt;li&gt;use &lt;code&gt;sdptool search DUN&lt;/code&gt; to find the device's Bluetooth hardware address and the channel on which the cellphone listens for RFCOMM, the scan will take some time&lt;/li&gt;&lt;br/&gt;&lt;li&gt;in &lt;code&gt;/etc/bluetooth/rfcomm.conf&lt;/code&gt; add a new connection with the address and channel you just found:&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;&lt;br/&gt;#&lt;br/&gt;# RFCOMM configuration file.&lt;br/&gt;#&lt;br/&gt;&lt;br/&gt;rfcomm0 {&lt;br/&gt;	# Automatically bind the device at startup&lt;br/&gt;	bind yes;&lt;br/&gt;&lt;br/&gt;	# Bluetooth address of the device&lt;br/&gt;	device XX:XX:XX:XX:XX:XX;&lt;br/&gt;&lt;br/&gt;	# RFCOMM channel for the connection&lt;br/&gt;	channel	4;&lt;br/&gt;&lt;br/&gt;	# Description of the connection&lt;br/&gt;	comment "Cellphone GPRS/UMTS DUN";&lt;br/&gt;}&lt;br/&gt;&lt;/pre&gt;&lt;br/&gt;&lt;ul&gt;&lt;li&gt;execute &lt;code&gt;/etc/init.d/bluetooth restart&lt;/code&gt;, you should now have a &lt;code&gt;/dev/rfcomm0&lt;/code&gt; device available, and &lt;code&gt;cat /dev/rfcomm0&lt;/code&gt; should cause the PC to connect to the cellphone (cat will output nothing, just kill it with &lt;code&gt;Crtl+C&lt;/code&gt; when you verify the connection works).&lt;/li&gt;&lt;br/&gt;&lt;/ul&gt;&lt;br/&gt;&lt;p&gt;Kernel requirements: besides what is needed for Bluetooth, enable all options under &lt;code&gt;Device Drivers / Network device support / PPP (point-to-point protocol) support&lt;/code&gt;. This only adds 16KB to the kernel size. Recompile, install, reboot with your new kernel (or if you really don't want to reboot, compile PPP as a module and modprobe it).&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Emerge ppp with &lt;code&gt;USE="dhcp"&lt;/code&gt;. Create a network service with &lt;code&gt;ln -s /etc/init.d/net /etc/init.d/net.ppp0&lt;/code&gt;. Configure it by creating &lt;code&gt;/etc/conf.d/net.ppp0&lt;/code&gt; with the following contents:&lt;/p&gt;&lt;pre&gt;&lt;br/&gt;### GPRS/EDGE/UMTS configuration ###&lt;br/&gt;config_ppp0=( "ppp" )&lt;br/&gt;link_ppp0="/dev/rfcomm0"&lt;br/&gt;&lt;br/&gt;pppd_ppp0=(&lt;br/&gt;	"noauth"&lt;br/&gt;	"debug"&lt;br/&gt;	"local"&lt;br/&gt;&lt;br/&gt;	"defaultroute"&lt;br/&gt;	"usepeerdns"&lt;br/&gt;&lt;br/&gt;	"lcp-echo-interval 15"&lt;br/&gt;	"lcp-echo-failure 3"&lt;br/&gt;&lt;br/&gt;	"lock"&lt;br/&gt;&lt;br/&gt;	"115200"&lt;br/&gt;	"crtscts"&lt;br/&gt;	)&lt;br/&gt;&lt;br/&gt;chat_ppp0="&lt;br/&gt;ABORT BUSY&lt;br/&gt;ABORT ERROR&lt;br/&gt;ABORT 'NO ANSWER'&lt;br/&gt;ABORT 'NO CARRIER'&lt;br/&gt;ABORT 'NO DIALTONE'&lt;br/&gt;ABORT 'Invalid Login'&lt;br/&gt;ABORT 'Login incorrect'&lt;br/&gt;'' AT&lt;br/&gt;TIMEOUT 5&lt;br/&gt;OK 'ATH'&lt;br/&gt;OK 'ATE1'&lt;br/&gt;OK 'AT+CGDCONT=1,\"IP\",\"internet\"'&lt;br/&gt;OK 'ATD*99#'&lt;br/&gt;TIMEOUT 60&lt;br/&gt;CONNECT ''&lt;br/&gt;TIMEOUT 5&lt;br/&gt;~--''&lt;br/&gt;"&lt;br/&gt;### end GPRS/EDGE/UMTS configuration ###&lt;br/&gt;&lt;/pre&gt;&lt;p&gt;You'll need to replace "internet" with the name of the connection profile you use for your data transfer (this should be provided by your cellular operator - "internet" is what Plus GSM uses in Poland). Start the connection with &lt;code&gt;/etc/init.d/net.ppp0 start&lt;/code&gt; and everything should work.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Software used:&lt;/p&gt;&lt;br/&gt;&lt;ul&gt;&lt;br/&gt;&lt;li&gt;sys-kernel/gentoo-sources-2.6.25-r7&lt;/li&gt;&lt;br/&gt;&lt;li&gt;sys-apps/openrc-0.2.5&lt;/li&gt;&lt;br/&gt;&lt;li&gt;sys-apps/baselayout-2.0.0&lt;/li&gt;&lt;br/&gt;&lt;li&gt;net-wireless/bluez-libs -3.36&lt;/li&gt;&lt;br/&gt;&lt;li&gt;net-wireless/bluez-utils-3.36 with USE="old-daemons"&lt;/li&gt;&lt;br/&gt;&lt;li&gt;net-dialup/ppp-2.4.4-r15 with USE="dhcp"&lt;/li&gt;&lt;br/&gt;&lt;/ul&gt;&lt;br/&gt;&lt;p&gt;Hardware used:&lt;/p&gt;&lt;br/&gt;&lt;ul&gt;&lt;br/&gt;&lt;li&gt;Nokia N95 8GB&lt;/li&gt;&lt;br/&gt;&lt;li&gt;HP Pavilion built-in Bluetooth adapter&lt;/li&gt;&lt;br/&gt;&lt;/ul&gt;&lt;br/&gt;&lt;p&gt;How-To based on articles:&lt;/p&gt;&lt;br/&gt;&lt;ul&gt;&lt;br/&gt;&lt;li&gt;&lt;a href="http://www.teaparty.net/technotes/blue-gprs.html"&gt;Tom's attempts to get GPRS working over bluetooth with his laptop&lt;/a&gt;&lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;a href="http://gentoo-wiki.com/Mobile_Phone/UMTS"&gt;Mobile Phone/UMTS - Gentoo Linux Wiki&lt;/a&gt; (extremely messy)&lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;a href="http://apes.pl/gprs/gprs.html"&gt;Jak połączyć się z internetem przez GPRS w linuksie?&lt;/a&gt;&lt;/li&gt;&lt;br/&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-2889462884394617163?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/2889462884394617163/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2008/08/using-cellphone-gprsedgeumts-internet_1191.html#comment-form' title='Komentarze (7)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/2889462884394617163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/2889462884394617163'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2008/08/using-cellphone-gprsedgeumts-internet_1191.html' title='Using a cellphone GPRS/EDGE/UMTS Internet connection through Bluetooth&#xA;under Gentoo Linux'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-225835523117270260</id><published>2008-07-08T10:03:00.006-07:00</published><updated>2012-01-19T08:50:57.285-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='gadgets'/><title type='text'>fsck -y</title><content type='html'>&lt;a href="http://www.flickr.com/photos/skolima/2649178657/" title="fsck -y"&gt;&lt;img src="http://farm4.static.flickr.com/3108/2649178657_44383b7aa7.jpg" width="375" height="500" alt="fsck -y" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-225835523117270260?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/225835523117270260/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2008/07/fsck-y_8434.html#comment-form' title='Komentarze (3)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/225835523117270260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/225835523117270260'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2008/07/fsck-y_8434.html' title='fsck -y'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3108/2649178657_44383b7aa7_t.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-4559150211284919630</id><published>2008-07-06T09:24:00.006-07:00</published><updated>2012-01-19T08:50:57.363-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gadgets'/><category scheme='http://www.blogger.com/atom/ns#' term='Techblog'/><title type='text'>Wymiana procesora w laptopie</title><content type='html'>&lt;p&gt;Jakiś czas temu otwarcie obudowy laptopa było dla mnie przerażające - na pewno coś zepsuję, pogubię śrubki i nie będzie działać. Od &lt;a href="http://skolima.jogger.pl/2006/01/25/toshiba-satellite-2140-tam-i-z-powrotem/"&gt;pierwszego udokumentowanego podejścia&lt;/a&gt; minęło już nieco czasu, zdążyłem się oswoić i nabrać śmiałości. Fotorelacja z wczorajszej zabawy - &lt;a href="http://www.flickr.com/photos/skolima/sets/72157605992787740/"&gt;wymiany procesora w laptopie HP Compaq&lt;/a&gt; - jest do obejrzenia dla ciekawskich, ja mam jeszcze parę dodatkowych wskazówek:&lt;/p&gt;&lt;br/&gt;&lt;ul&gt;&lt;li&gt;Rozkręcając laptopa/notebooka/inny mały komputer miej pod ręką pastę termoprzewodzącą i jakąś niekłaczącą szmatkę/chusteczki. Nawet jeśli planujesz tylko zajrzeć do środka - część elementów może &lt;a href="http://www.flickr.com/photos/skolima/2639371651/in/set-72157605992787740/"&gt;wykorzystywać zewnętrzną obudowę w charakterze radiatora&lt;/a&gt;, pastę termoprzewodzącą trzeba zawsze wymienić (dokładnie usunąć starą, zaaplikować cienką warstwę świeżej) jeśli się rozdzieli posmarowane nią elementy.&lt;/li&gt;&lt;br/&gt;&lt;li&gt;Oznaczaj/zapisuj skąd wykręciłeś niestandardowe śrubki). Oszczędza to potem &lt;a href="http://www.flickr.com/photos/skolima/2640268094/"&gt;sporo kombinowania&lt;/a&gt;. ;-) &lt;/li&gt;&lt;br/&gt;&lt;li&gt;Większość śrub trzymających obudowę będzie wkręcana od spodu, ale część znajduje się zawsze z wierzchu, &lt;a href="http://www.flickr.com/photos/skolima/2640180692/"&gt;pod klawiaturą&lt;/a&gt; lub przyciskami multimedialnymi. Sprawdź  czy płytka z tymi przyciskami nie jest przykręcona zanim zaczniesz ją podważać. :-)&lt;/li&gt;&lt;br/&gt;&lt;li&gt;Górna część laptopa (wyświetlacz i klawiatura) połączona jest z płytą główną &lt;a href="http://www.flickr.com/photos/skolima/2640187810/"&gt;kilkoma taśmami&lt;/a&gt;. Wyglądają one na strasznie delikatne i trudne do wpięcia, na szczęście tak nie jest. Wystarczy je odpiąć (zatrzask jest zazwyczaj od strony płyty głównej) i wyciągnąć.&lt;/li&gt;&lt;br/&gt;&lt;li&gt;Jeśli coś wymieniałeś - sprawdź, czy &lt;a href="http://www.flickr.com/photos/skolima/2640259914/"&gt;komputer nadal się uruchamia&lt;/a&gt; przed zmontowaniem go z powrotem. Zazwyczaj da się to zrobić nawet bez klawiatury, a można sobie oszczędzić sporo zbędnej pracy.&lt;/li&gt;&lt;/ul&gt;&lt;br/&gt;&lt;p&gt;Przy okazji - mam na sprzedaż &lt;a href="http://allegro.pl/item395698975_sodimm_ddr_256mb_cl2_5_333mhz.html"&gt;2 kości RAM do laptopa (DDR 333Mhz 256MB CL2.5)&lt;/a&gt; oraz &lt;a href="http://allegro.pl/item395703879_intel_celeron_m_330_1400mhz_512_kb_cache.html"&gt;procesor Intel Celeron M 330 1.4GHz&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-4559150211284919630?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/4559150211284919630/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2008/07/wymiana-procesora-w-laptopie_2588.html#comment-form' title='Komentarze (3)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/4559150211284919630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/4559150211284919630'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2008/07/wymiana-procesora-w-laptopie_2588.html' title='Wymiana procesora w laptopie'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-2400715378642053919</id><published>2008-07-05T13:20:00.006-07:00</published><updated>2012-01-19T08:50:57.293-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unsorted ramblings'/><title type='text'>N-Gage po polsku</title><content type='html'>&lt;a href="http://www.flickr.com/photos/skolima/2639851784/" title="N-Gage po polsku"&gt;&lt;img src="http://farm3.static.flickr.com/2098/2639851784_f65745a885_o.png" width="240" height="320" alt="Dokonaj zakupu aby kontynułować" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-2400715378642053919?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/2400715378642053919/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2008/07/n-gage-po-polsku_730.html#comment-form' title='Komentarze (6)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/2400715378642053919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/2400715378642053919'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2008/07/n-gage-po-polsku_730.html' title='N-Gage po polsku'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-3009148739833501514</id><published>2008-05-12T05:01:00.006-07:00</published><updated>2012-01-19T08:50:57.308-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unsorted ramblings'/><title type='text'>Witamy w Chinach</title><content type='html'>&lt;p&gt;Właśnie zobaczyłem mało przyjazny komunikat:&lt;/p&gt;&lt;br/&gt;&lt;blockquote&gt;&lt;span style="background:red;color:black;"&gt;This video is not available in your country.&lt;/span&gt;&lt;/blockquote&gt;&lt;br/&gt;&lt;p&gt;Cholera. Od kiedy YouTube cenzuruje filmy? W tym przypadku (&lt;a href="http://www.youtube.com/watch?v=K1SGSn6NOkI"&gt;"Nowy Hymn Radia Maryja / Rammstein"&lt;/a&gt;) na 100% nie chodzi o ochronę praw autorskich - przy takich zarzutach zdejmują film, a ten przez proxy z Wielkiej Brytanii można obejrzeć.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-3009148739833501514?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/3009148739833501514/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2008/05/witamy-w-chinach_4562.html#comment-form' title='Komentarze (10)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/3009148739833501514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/3009148739833501514'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2008/05/witamy-w-chinach_4562.html' title='Witamy w Chinach'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-7309573371096555665</id><published>2008-05-06T09:11:00.006-07:00</published><updated>2012-01-19T08:50:57.427-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unsorted ramblings'/><title type='text'>Cholerne tłumaczenia...</title><content type='html'>&lt;p&gt;Chyba czas odwołać się do mądrości kolektywu ;-) Mam problem ze znalezieniem dobrze brzmiących i jednoznaczych tłumaczeń dla "commit", "changeset" oraz "revision". Ma ktoś pomysły na sensowne tłumaczenia poniższych sformułowań? (teksty z polskiej wersji &lt;a href="http://www.redmine.org/"&gt;Redmine&lt;/a&gt;)&lt;/p&gt;&lt;br/&gt;&lt;ul&gt;&lt;br/&gt;&lt;li&gt;"The entry or revision was not found in the repository." (roboczo - "Obiekt lub wersja nie zostały znalezione w repozytorium.")&lt;/li&gt;&lt;br/&gt;&lt;li&gt;"Autofetch commits" (roboczo - "Automatyczne pobieranie zmian")&lt;/li&gt;&lt;br/&gt;&lt;li&gt;"Referencing keywords" (roboczo - "Słowa tworzące powiązania")&lt;/li&gt;&lt;br/&gt;&lt;li&gt;"Fixing keywords" (roboczo - "Słowa zmieniające status")&lt;/li&gt;&lt;br/&gt;&lt;li&gt;"revision, revisions, view revisions, latest revision" (roboczo - "wersja, wersje, pokaż wersje, najnowsza wersja" - jak to odróżnić od "version"?)&lt;/li&gt;&lt;br/&gt;&lt;li&gt;"Commits per month" (roboczo - "Zatwierdzenia według miesięcy")&lt;/li&gt;&lt;br/&gt;&lt;li&gt;"Commits per author" (roboczo - "Zatwierdzenia według autorów")&lt;/li&gt;&lt;br/&gt;&lt;li&gt;"Referencing and fixing issues in commit messages" (roboczo - "Odwołania do zagadnień w komentarzach zatwierdzeń")&lt;/li&gt;&lt;br/&gt;&lt;li&gt;"Associated revisions" (roboczo - "Skojarzone wersje")&lt;/li&gt;&lt;br/&gt;&lt;li&gt;"changeset, changesets" (roboczo - "zmiana, zmiany")&lt;/li&gt;&lt;br/&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-7309573371096555665?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/7309573371096555665/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2008/05/cholerne-tumaczenia_8699.html#comment-form' title='Komentarze (4)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/7309573371096555665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/7309573371096555665'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2008/05/cholerne-tumaczenia_8699.html' title='Cholerne tłumaczenia...'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-2012211620340595565</id><published>2008-04-13T08:51:00.006-07:00</published><updated>2012-01-19T08:50:57.277-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unsorted ramblings'/><title type='text'>Pstrykanie</title><content type='html'>&lt;img src="http://konie.wlkp.pl/skolima/jogger/pstrykanie.jpg" alt="pstrykanie babolami - ściana obok" /&gt;&lt;br/&gt;&lt;p&gt;Wywieszka w toalecie u mnie w pracy. Z kartką doklejoną poniżej oryginalnego apelu nie mam absolutnie nic wspólnego, to jakiś aspołeczny osobnik musiał dodać ;-) &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-2012211620340595565?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/2012211620340595565/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2008/04/pstrykanie_4391.html#comment-form' title='Komentarze (4)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/2012211620340595565'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/2012211620340595565'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2008/04/pstrykanie_4391.html' title='Pstrykanie'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-213873951339808803</id><published>2008-03-27T14:02:00.006-07:00</published><updated>2012-01-19T08:50:57.282-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Techblog'/><title type='text'>Zabawa z bootchart</title><content type='html'>&lt;p&gt;Zainspirowany konkursem &lt;a href="http://matiit.jogger.pl/2008/03/23/bootchart-moze-maly-konkursik/"&gt;"kto szybciej"&lt;/a&gt; zacząłem kombinować z przyśpieszaniem startu mojego Gentoo. Udało mi się ściąć... 3 sekundy. Patentów wypróbowanych - całkiem sporo.&lt;/p&gt;&lt;br/&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;RC_PARALLEL_STARTUP="yes"&lt;/strong&gt; - to są właśnie te uzyskane 3 sekundy (choć pamiętam, że z jakiegoś powodu, dawno temu, wyłączałem równoległe uruchamianie usług).&lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;strong&gt;&lt;a href="http://help.lockergnome.com/linux/gentoo-dev-baselayout-stablisation-plans-ftopict482116.html"&gt;baselayout-2&lt;/a&gt;&lt;/strong&gt; - czas startu spadł o 30 sekund. Bardzo przyjemnie, choć wymagało ręcznego poprawiania błędów w skryptach startowych i nie potrafi wyłączyć komputera gdy ma problemy z odmontowaniem udziałów NFS (o dziwo, baselayout-1 zawsze sobie z tym radzi). Zrezygnowałem.&lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;strong&gt;wyłączenie zbędnych usług&lt;/strong&gt; - poleciało dhcp i distccd. Kolejne 10 sekund. Razem z poprawą z baselayout-2 miałoby to sens, ale samodzielnie - nie. Leniwy jestem, włączyłem z powrotem.&lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;strong&gt;readahead-list&lt;/strong&gt; - żadnej różnicy w mierzonym czasie, problemy z zależnościami pomiędzy skryptami w /etc/init.d/. Dziękuję.&lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;strong&gt;&lt;a href="http://forums.gentoo.org/viewtopic-t-646289.html"&gt;squashfs + aufs&lt;/a&gt;&lt;/strong&gt; - strasznie ryzykownie to wygląda, nie wypróbowałem.&lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;strong&gt;"timeout 1" w grub.conf&lt;/strong&gt; - bootchart tego nie mierzy, ale zawsze to nieco szybciej.&lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;strong&gt;&lt;a href="http://www.gentoo.org/doc/en/prelink-howto.xml"&gt;prelink&lt;/a&gt;&lt;/strong&gt; - przy instalacji ebuild nie przechodzi własnych testów automatycznych. Nie.&lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;strong&gt;&lt;a href="http://forums.gentoo.org/viewtopic.php?t=67777"&gt;LDFLAGS&lt;/a&gt;&lt;/strong&gt; - pożyjemy, zobaczymy, ale tutaj raczej kolosalnej róznicy się nie spodziewam.&lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;strong&gt;TuxOnIce&lt;/strong&gt;, albo inaczej - hibernacja. Z nieznanych mi powodów czasem się nie wznawia. Jeśli się wznowi, to wyłącza monitor (EDIT: pomogło dodanie &lt;code&gt;OnResume 99 /usr/bin/chvt 7&lt;/code&gt; do /etc/hibernate/common.conf). Ale kiedy działa, to komputer startuje w 1/6 normalnego czasu. Nice. Przydało by się jakieś GUI.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-213873951339808803?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/213873951339808803/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2008/03/zabawa-z-bootchart_355.html#comment-form' title='Komentarze (3)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/213873951339808803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/213873951339808803'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2008/03/zabawa-z-bootchart_355.html' title='Zabawa z bootchart'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-6152690049508670350</id><published>2008-03-05T06:56:00.006-08:00</published><updated>2012-01-19T08:50:57.396-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gadgets'/><title type='text'>Telefon. Z klapką.</title><content type='html'>&lt;div&gt;&lt;br/&gt;&lt;p&gt;Szukam nowego telefonu. Na liście wymagań:&lt;/p&gt;&lt;br/&gt;&lt;ul&gt;&lt;br/&gt;&lt;li&gt;obudowa &lt;a href="http://en.wikipedia.org/wiki/Clamshell"&gt;"z klapką"&lt;/a&gt;&lt;/li&gt;&lt;br/&gt;&lt;li&gt;odtwarzacz mp3(/wma/ogg)&lt;/li&gt;&lt;br/&gt;&lt;li&gt;slot kart pamięci albo przynajmniej 2GB wbudowanej&lt;/li&gt;&lt;br/&gt;&lt;li&gt;gniazdo USB i działanie jako &lt;a href="http://en.wikipedia.org/wiki/USB_Mass_Storage_Device_class"&gt;urządzenie pamięci masowej&lt;/a&gt;&lt;/li&gt;&lt;br/&gt;&lt;li&gt;obsługa &lt;a href="http://en.wikipedia.org/wiki/A2DP#Advanced_Audio_Distribution_Profile_.28A2DP.29"&gt;słuchawek stereo przez Bluetooth&lt;/a&gt;&lt;/li&gt;&lt;br/&gt;&lt;li&gt;dodatkowo punktowane gniazdo mini jack do słuchawek i marka Nokia&lt;/li&gt;&lt;br/&gt;&lt;/ul&gt;&lt;br/&gt;&lt;p&gt;Ktoś zna takowe urządzenie?&lt;/p&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-6152690049508670350?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/6152690049508670350/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2008/03/telefon-z-klapka_8423.html#comment-form' title='Komentarze (11)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/6152690049508670350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/6152690049508670350'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2008/03/telefon-z-klapka_8423.html' title='Telefon. Z klapką.'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-6573009130249302316</id><published>2008-01-31T11:00:00.006-08:00</published><updated>2012-01-19T08:50:57.408-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Mój domowy serwer</title><content type='html'>Jest mały, szarozielony i nazywa się snotling.&lt;br/&gt;&lt;br/&gt;&lt;img src="http://konie.wlkp.pl/skolima/jogger/paragon.png" alt="komputer 49.99" /&gt;&lt;br/&gt;&lt;pre&gt;snotling ~ # cat /proc/cpuinfo&lt;br/&gt;processor       : 0&lt;br/&gt;vendor_id       : GenuineIntel&lt;br/&gt;model name      : Pentium III (Katmai)&lt;br/&gt;cpu MHz         : 448.646&lt;br/&gt;flags           : fpu vme de pse tsc msr pae mce cx8 sep mtrr pge mca cmov pat pse36 mmx fxsr sse&lt;br/&gt;bogomips        : 897.87&lt;br/&gt;snotling ~ # uname -a&lt;br/&gt;Linux snotling 2.6.23-gentoo-r6 #2 Thu Jan 31 13:14:15 CET 2008 i686 Pentium III (Katmai) GenuineIntel GNU/Linux&lt;/pre&gt;&lt;br/&gt;Dostała mu się jeszcze gigabitowa sieciówka, kontroler SATA, dysk 300GB i 512MB RAMu – ale to już inny paragon ;-) Tak wyglądał zaraz po przyniesieniu do domu:&lt;br/&gt;&lt;br/&gt;&lt;img title="snotling prosto ze sklepu" src="http://konie.wlkp.pl/skolima/jogger/snotling_brand_new.jpg" alt="snotling prosto ze sklepu" width="845" height="634" /&gt;&lt;br/&gt;&lt;br/&gt;A tak po dołożeniu ulepszeń:&lt;br/&gt;&lt;br/&gt;&lt;img title="snotling z dodatkami" src="http://konie.wlkp.pl/skolima/jogger/snotling_upgrades.jpg" alt="snotling z dodatkami" width="845" height="634" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-6573009130249302316?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/6573009130249302316/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2008/01/moj-domowy-serwer_6106.html#comment-form' title='Komentarze (3)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/6573009130249302316'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/6573009130249302316'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2008/01/moj-domowy-serwer_6106.html' title='Mój domowy serwer'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-1179959044649818480</id><published>2008-01-30T08:13:00.006-08:00</published><updated>2012-01-19T08:50:57.253-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unsorted ramblings'/><title type='text'>gg.chrome.pl</title><content type='html'>&lt;p&gt;Korzysta ktoś może z transportu gg.chrome.pl? Jest jakiś powód, dla którego od wczoraj jestem bombardowany prośbami o autoryzację, których najwyraźniej nie da się zablokować?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-1179959044649818480?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/1179959044649818480/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2008/01/ggchromepl_941.html#comment-form' title='Komentarze (3)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/1179959044649818480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/1179959044649818480'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2008/01/ggchromepl_941.html' title='gg.chrome.pl'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-431431589124584812</id><published>2008-01-23T10:49:00.006-08:00</published><updated>2012-01-19T08:50:57.358-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unsorted ramblings'/><category scheme='http://www.blogger.com/atom/ns#' term='Techblog'/><title type='text'>It's not a bug, it's a feature</title><content type='html'>&lt;p&gt;Oj wybredny jest parser zapytań w MySQL, wybredny. &lt;code&gt;SUM (a)&lt;/code&gt; w &lt;code&gt;SELECT&lt;/code&gt; jak najbardziej przechodzi, ale w &lt;code&gt;CREATE VIEW xxx AS SELECT&lt;/code&gt; już nie. Przy tworzeniu perspektywy baza odmawia współpracy komunikatem "funkcja nazwatabeli.SUM nie istnieje". Chodzi o to, że spacja pomiędzy &lt;code&gt;SUM&lt;/code&gt; a nawiasem otwierającym jest inaczej interpretowana przy zwykłym zapytaniu a inaczej przy tworzeniu perspektywy - w pierwszym przypadku parser zaczyna od szukania funkcji &lt;code&gt;nazwatabeli.SUM&lt;/code&gt; a gdy jej nie znajdzie wywołuje zwykłe &lt;code&gt;SUM&lt;/code&gt;, w drugim przypadku od razu zgłasza błąd.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Sporo nerwów można stracić też przez inny "feature". MySQL w nazwach baz danych i tabel pozwala na znaki '_' i '-' oprócz zwykłych alfanumerycznych - ale takich tabel nie da się już użyć przy odwołaniu do kilku baz w jednym zapytaniu, bo parser ich po prostu nie znajdzie.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-431431589124584812?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/431431589124584812/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2008/01/it-not-bug-it-feature_7268.html#comment-form' title='Komentarze (7)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/431431589124584812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/431431589124584812'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2008/01/it-not-bug-it-feature_7268.html' title='It&amp;#39;s not a bug, it&amp;#39;s a feature'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-6850719876692285767</id><published>2007-11-28T04:31:00.006-08:00</published><updated>2012-01-19T08:50:57.422-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Techblog'/><title type='text'>screen</title><content type='html'>&lt;p&gt;Bardzo, ale to bardzo przydatne polecenie:&lt;/p&gt;&lt;br/&gt;&lt;pre&gt;ssh -t user@host screen -RD&lt;/pre&gt;&lt;br/&gt;&lt;p&gt;Otwiera połączenie ssh z sesją screen'a, co pozwala wylogować się z maszyny &lt;code&gt;host&lt;/code&gt; bez zamykania powłoki i kończenia uruchomionych poleceń. W celu zakończenia sesji ssh należy nacisnąć &lt;code&gt;[crtl] + [a], [d]&lt;/code&gt;, potem można powrócić do (działającej ciągle na serwerze) powłoki tym poleceniem co poprzednio. Żeby zamknąć sesję &lt;code&gt;screen&lt;/code&gt; należy po prostu wydać polecenie &lt;code&gt;exit&lt;/code&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-6850719876692285767?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/6850719876692285767/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2007/11/screen_1832.html#comment-form' title='Komentarze (8)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/6850719876692285767'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/6850719876692285767'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2007/11/screen_1832.html' title='screen'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-5249098252559585579</id><published>2007-11-01T17:13:00.006-07:00</published><updated>2012-01-19T08:50:57.380-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='unsorted ramblings'/><category scheme='http://www.blogger.com/atom/ns#' term='Techblog'/><title type='text'>Konwersja .mp3 na .amr</title><content type='html'>&lt;p&gt;Oczywiście wszystkie nowe komórki potrafią odtwarzać mp3. Tylko po co mi nowy telefon, jak stary nadal działa (i rozumie tylko dość egzotyczny format &lt;a href="http://pl.wikipedia.org/wiki/AMR_%28format_pliku%29"&gt;&lt;abbr title="Adaptive Multi-Rate"&gt;AMR&lt;/abbr&gt;&lt;/a&gt;)? Ku pamięci - konwersja plików dźwiękowych:&lt;/p&gt;&lt;br/&gt;&lt;pre&gt;ffmpeg -i input.mp3 -acodec libamr_nb -ar 8000 -ab 12.2k -ac 1 output.amr &lt;/pre&gt;&lt;br/&gt;&lt;p&gt;albo (ale to już mniej telefonów będzie potrafiło odtwarzać):&lt;/p&gt;&lt;br/&gt;&lt;pre&gt;ffmpeg -i input.mp3 -acodec libamr_wb -ar 16000 -ab 23.85k -ac 1 output.amr&lt;/pre&gt;&lt;br/&gt;&lt;p&gt;Oczywiście plik wejściowy może być w dowolnym formacie obslugiwanym przez ffmpeg, czyli prawie każdym istniejącym ;-) Pod Gentoo trzeba ustawić flagę &lt;code&gt;USE="amr"&lt;/code&gt; przy emergowaniu ffmpeg żeby włączyć obsługę kodeka.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-5249098252559585579?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/5249098252559585579/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2007/11/konwersja-mp3-na-amr_7544.html#comment-form' title='Komentarze (1)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/5249098252559585579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/5249098252559585579'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2007/11/konwersja-mp3-na-amr_7544.html' title='Konwersja .mp3 na .amr'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-499571106072645756</id><published>2007-10-16T06:33:00.006-07:00</published><updated>2012-01-19T08:50:57.372-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gadgets'/><title type='text'>Kiepskie s-f</title><content type='html'>&lt;p&gt;"Dodatkowo kosmonauci odkryli, że jeden z nowych kabli jest o 40cm krótszy od tego, który miał zostać nim zastąpiony - nie sięga do złącza. Na szczęście po dokładnym obejrzeniu nie stwierdzili żadnych śladów korozji, więc wymiana nie była konieczna. Zainstalowali za to dodatkową osłonę termiczną wykonaną z zapasowego podręcznika obsługi oraz szarej taśmy samoprzylepnej. Na koniec usunęli założone wcześniej zworki obchodzące system bezpieczeństwa, upewnili się, że komputery działają i zamknęli obudowę." (tłumaczenie własne z języka angielskiego)&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Pytanie warte piwa: z czego pochodzi cytat?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-499571106072645756?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/499571106072645756/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2007/10/kiepskie-s-f_2446.html#comment-form' title='Komentarze (3)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/499571106072645756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/499571106072645756'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2007/10/kiepskie-s-f_2446.html' title='Kiepskie s-f'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-2692918572405184929</id><published>2007-10-08T15:15:00.006-07:00</published><updated>2012-01-19T08:50:57.298-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unsorted ramblings'/><title type='text'>Twoja babcia na wybory zabiera koleżanki!</title><content type='html'>&lt;p&gt;Odebranie w Urzędzie Miasta zaświadczenia o prawie do głosowania poza miejscem zamieszkania : 24 minuty. Możliwość narzekania na rząd przez najbliższe cztery(*) lata : bezcenne.&lt;br /&gt;(*) pełne cztery lata nie są gwarantowane&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-2692918572405184929?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/2692918572405184929/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2007/10/twoja-babcia-na-wybory-zabiera_4760.html#comment-form' title='Komentarze (11)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/2692918572405184929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/2692918572405184929'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2007/10/twoja-babcia-na-wybory-zabiera_4760.html' title='Twoja babcia na wybory zabiera koleżanki!'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-3987262877424360621</id><published>2007-09-26T11:45:00.006-07:00</published><updated>2012-01-19T08:50:57.347-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='en'/><category scheme='http://www.blogger.com/atom/ns#' term='unsorted ramblings'/><title type='text'>Tell us why you love Google Talk</title><content type='html'>&lt;img src="http://konie.wlkp.pl/skolima/jogger/tell_us_why_u_love_gtalk.png" title="Tell us why you love Google Talk" alt ="I'm seeing unlawful pornography"/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-3987262877424360621?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/3987262877424360621/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2007/09/tell-us-why-you-love-google-talk_9325.html#comment-form' title='Komentarze (1)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/3987262877424360621'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/3987262877424360621'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2007/09/tell-us-why-you-love-google-talk_9325.html' title='Tell us why you love Google Talk'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-674398480529307032</id><published>2007-08-20T15:22:00.006-07:00</published><updated>2012-01-19T08:50:57.414-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><category scheme='http://www.blogger.com/atom/ns#' term='Techblog'/><title type='text'>PicasaWeb Downloader</title><content type='html'>&lt;p&gt;Trochę ponad tydzień temu &lt;a href="http://walker.jogger.pl/"&gt;Walker&lt;/a&gt; chwalił się &lt;a href="http://walker.jogger.pl/2007/08/09/uploadowanie-zdjec-na-picasa-web-pod-linuxem-picasauploader/"&gt;skryptem do uploadowania zdjęć&lt;/a&gt; do albumów &lt;a href="http://picasaweb.google.com/home"&gt;PicasaWeb&lt;/a&gt; (program Picasa w wersji na linuksa nie posiada takiej funkcjonalności). Jego wpis przypomniał mi o leżącym odłogiem 1GB sieciowego miejsca, akurat gdy zastanawiałem się, jak przesłać przyjaciołom (aktualnie przebywającym w Norwegii) zdjęcia z wakacji. Do wgrania obrazów w końcu wykorzystałem &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/4724"&gt;Firefox Universal Uploader&lt;/a&gt;, został tylko jeden problem - jak pobrać taki album na dysk, nie instalując kobylastej Picasy?&lt;/p&gt;&lt;EXCERPT&gt;&lt;br/&gt;&lt;p&gt;&lt;a href="http://www.tomergabel.com/default.aspx"&gt;Tomer Gabel&lt;/a&gt; napisał prosty konsolowy program w C#, który wykorzystuje &lt;a href="http://code.google.com/apis/picasaweb/overview.html"&gt;Google Data API&lt;/a&gt; by zassysać całe albumy z PicasaWeb. Do wczoraj jego rozwiązanie miał jedną wadę - nie obsługiwało albumów prywatnych, wymagających znajomości klucza. Jednak Tomer uwzględnił liczne prośby użytkowników ;-) i uzupełnił brakującą funkcjonalność. &lt;a href="http://www.tomergabel.com/PicasaWeb+Downloader.aspx"&gt;PicasaWeb Downloader&lt;/a&gt; można pobrać z jego strony razem z kodem źródłowym w C#. Oczywiście, ponieważ to .Net, więc kompiluje się i działa również pod linuksem, przy użyciu &lt;a href="http://www.mono-project.com/Main_Page"&gt;Mono&lt;a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-674398480529307032?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/674398480529307032/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2007/08/picasaweb-downloader_6764.html#comment-form' title='Komentarze (17)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/674398480529307032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/674398480529307032'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2007/08/picasaweb-downloader_6764.html' title='PicasaWeb Downloader'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>17</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-4757439684015113975</id><published>2007-08-01T10:10:00.006-07:00</published><updated>2012-01-19T08:50:57.369-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unsorted ramblings'/><title type='text'>Zdjęcia panoramiczne</title><content type='html'>&lt;p&gt;W końcu znalazłem czas by wypróbować możliwości programu do składania zdjęć panoramicznych - &lt;a href="http://hugin.sourceforge.net/"&gt;hugin&lt;/a&gt;'a. Przy wsparciu &lt;a href="http://exolucere.ca/articles/create-panorama"&gt;dobrego tutoriala&lt;/a&gt; cały proces okazał się w miarę prosty (chociaż dość długotrwały - automat mielił zdjęcia ponad godzinę) a efekt końcowy jak dla mnie jest bardzo zadowalający.&lt;/p&gt;&lt;br/&gt;&lt;EXCERPT&gt;&lt;br/&gt;&lt;br/&gt;&lt;object width="450" height="292" type="application/x-shockwave-flash"&lt;br/&gt;	data="http://backend.deviantart.com/embed/view.swf"&gt;&lt;br/&gt;		&lt;param name="movie" value="http://backend.deviantart.com/embed/view.swf" /&gt;&lt;br/&gt;		&lt;param name="quality" value="high" /&gt;&lt;br/&gt;		&lt;param name="flashvars" value="id=61081401" /&gt;&lt;br/&gt;&lt;/object&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Na przyszłość muszę jeszcze pamiętać o takich "szczegółach" jak zablokowanie parametrów aparatu (czas naświetlania, przesłona itd.) po wykonaniu pierwszego zdjęcia z serii i zadbanie o wystarczającą ilość punktów odniesienia na zdjęciach (tzn. zdjęcia będące elementami panoramy powinny na siebie nachodzić w 30%-50% i zawierać obiekty charakterystyczne, szczególnie w pobliżu boków). &lt;a href="http://www.deviantart.com/deviation/61157787/"&gt;Druga próba zrobienia zdjęcia panoramicznego&lt;/a&gt; właśnie dlatego niezbyt mi się udała. No i statyw by się przydał...&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-4757439684015113975?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/4757439684015113975/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2007/08/zdjecia-panoramiczne_6509.html#comment-form' title='Komentarze (2)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/4757439684015113975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/4757439684015113975'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2007/08/zdjecia-panoramiczne_6509.html' title='Zdjęcia panoramiczne'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-2367509316660706383</id><published>2007-07-02T09:00:00.006-07:00</published><updated>2012-01-19T08:50:57.291-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='en'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><category scheme='http://www.blogger.com/atom/ns#' term='Techblog'/><title type='text'>Debugging NUnit tests in Visual Studio 2005 Express</title><content type='html'>&lt;p&gt;VS2005 Express imposes many limitations on it's users as a trade-off for being free. It's main disadvantage &lt;abbr title="In My Humble Opinion"&gt;IMHO&lt;/abbr&gt; is that it provides no support at all for unit tests. Fortunately there is a simple workaround for this. No, I am not talking about hacking VS to accept plugins as TestDriven.NET used to do. What I wanted to have was the ability to click "Debug" on a library project containing test and have it launched - inside the Visual Studio debugger.&lt;/p&gt;&lt;EXCERPT&gt;&lt;br/&gt;&lt;p&gt;This trick requires adding a tiny bit of magic code to the .csproj file:&lt;/p&gt;&lt;br/&gt;&lt;pre&gt;&lt;br/&gt;&amp;lt;PropertyGroup&gt;&lt;br/&gt;  &amp;lt;Nunit_Path Condition="'$(NUNIT_PATH)' == ''"&gt;C:\Program Files\NUnit&amp;lt;/Nunit_Path&gt;&lt;br/&gt;  &amp;lt;StartAction&gt;Program&amp;lt;/StartAction&gt;&lt;br/&gt;  &amp;lt;StartProgram&gt;$(NUNIT_PATH)\bin\nunit.exe&amp;lt;/StartProgram&gt;&lt;br/&gt;  &amp;lt;StartArguments&gt;/run $(TargetFileName)&amp;lt;/StartArguments&gt;&lt;br/&gt;  &amp;lt;!--.csproj.user overwrites those values!--&gt;&lt;br/&gt;&amp;lt;/PropertyGroup&gt;&lt;br/&gt;&lt;/pre&gt;&lt;br/&gt;&lt;p&gt;This should be pasted at the end of the project file, after &lt;code&gt;&amp;lt;Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /&gt;&lt;/code&gt; and just before &lt;code&gt;&amp;lt;/Project&gt;&lt;/code&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Save the changes and open the project in Visual Studio. You can now launch the tests by clicking "Debug-&gt;Start Without Debugging" and debug them with "Debug-&gt;Start Debugging". One caveat, though - this assumes that NUnit is installed in &lt;code&gt;C:\Program Files\NUnit&lt;/code&gt;. If your instalation directory is different, you have to set the environment variable &lt;code&gt;NUNIT_PATH&lt;/code&gt; accordingly.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;On a side note, some MSBuild/VS2005 quirks:&lt;/p&gt;&lt;br/&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;StartProgram&lt;/code&gt; has to point to an absolute location (i.e. not to a program in &lt;code&gt;PATH&lt;/code&gt;)&lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;code&gt;StartWorkingDirectory&lt;/code&gt; has to be unset (or it could point to &lt;code&gt;$TargetDir&lt;/code&gt;, if only I could get it to resolve instead of returning &lt;code&gt;"@(_OutputPathItem-&gt;'%(FullPath)')"&lt;/code&gt; literally)&lt;/li&gt;&lt;br/&gt;&lt;li&gt;all those properties can be set from Professional version - Express does not show edit boxes for most of them&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-2367509316660706383?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/2367509316660706383/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2007/07/debugging-nunit-tests-in-visual-studio_30.html#comment-form' title='Komentarze (4)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/2367509316660706383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/2367509316660706383'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2007/07/debugging-nunit-tests-in-visual-studio_30.html' title='Debugging NUnit tests in Visual Studio 2005 Express'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-3029367293483538295</id><published>2007-06-26T11:00:00.006-07:00</published><updated>2012-01-19T08:50:57.311-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gadgets'/><title type='text'>Krótkie lekcje</title><content type='html'>&lt;p&gt;&lt;em&gt;Elektronika.&lt;/em&gt; Zasilacza 12V, 1000mA nie można zastąpić zasilaczem 12V, 1200mA mimo takich samych wtyczek. Próba kończy się głośnym pyknięciem i dymem unoszącym się z routera.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&lt;em&gt;Marketing.&lt;/em&gt; Warto przyjmować reklamację produktu bez zbytniego wybrzydzania. Klient zapamięta miłą obsługę, a nie uszkodzony produkt i wróci po kolejne zakupy. Zwłaszcza, jeśli produkt został uszkodzony "tak nie do końca z winy sklepu".&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-3029367293483538295?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/3029367293483538295/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2007/06/krotkie-lekcje_774.html#comment-form' title='Komentarze (2)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/3029367293483538295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/3029367293483538295'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2007/06/krotkie-lekcje_774.html' title='Krótkie lekcje'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-8923979330710691489</id><published>2007-06-05T08:59:00.006-07:00</published><updated>2012-01-19T08:50:57.478-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unsorted ramblings'/><title type='text'>hi5 - kolejny spammer</title><content type='html'>&lt;p&gt;Po niedawnej historii z automatycznym rozsyłaniem zaproszeń przez &lt;a href="http://en.wikipedia.org/wiki/Netlog"&gt;Netlog&lt;/a&gt;, ta sama taktyka stosowana jest przez stronę &lt;abbr title="nie linkuję spammerów"&gt;hi5&lt;/abbr&gt;. Zachęcam do przeczytania przestróg &lt;a href="http://blog.konieczny.be/2007/04/04/uwazajcie-na-spamerow-z-facebox-com/"&gt;Piotra Koniecznego&lt;/a&gt; odnośnie poprzedniego przypadku.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Jeśli dałeś/aś się złapać, koniecznie &lt;a href="https://www.google.com/accounts/EditPasswd"&gt;zmień hasło do GMail'a&lt;/a&gt;. A na przyszłość pamiętaj, że regulamin google (i większości innych serwisów) &lt;a href="http://mail.google.com/mail/help/program_policies.html"&gt;zabrania ujawniania hasła&lt;/a&gt;.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-8923979330710691489?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/8923979330710691489/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2007/06/hi5-kolejny-spammer_5803.html#comment-form' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/8923979330710691489'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/8923979330710691489'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2007/06/hi5-kolejny-spammer_5803.html' title='hi5 - kolejny spammer'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-3343159261737753868</id><published>2007-03-19T08:06:00.006-07:00</published><updated>2012-01-19T08:50:57.321-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Techblog'/><title type='text'>YaKuake dla Windows?</title><content type='html'>&lt;p&gt;Pod linuxem bardzo szybko przyzwyczaiłem się do jednej prostej aplikacji: &lt;a href="http://yakuake.uv.ro/"&gt;YaKuake&lt;/a&gt;. Genialne jest w niej to, że po naciśnięciu jednego przycisku (domyślnie &lt;kbd&gt;F12&lt;/kbd&gt;) pojawia się schowana dotychczas konsola, po naciśnięciu go ponownie - chowa się. No i oczywiście możliwe jest uruchomienie kilku konsol w osobnych kartach. Teraz zmuszony jestem do korzystania z windows i cierpię ;-) Czy znane jest komuś podobne narzędzie dla tego "cudownego" systemu?&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Update: znalazłem &lt;a href="http://www.codeplex.com/PoshConsole"&gt;PoshConsole&lt;/a&gt;. Spełnia wymagania... teraz tylko czekam, aż pojawi się wersja, która nie pada po trzech poleceniach.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-3343159261737753868?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/3343159261737753868/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2007/03/yakuake-dla-windows_581.html#comment-form' title='Komentarze (7)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/3343159261737753868'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/3343159261737753868'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2007/03/yakuake-dla-windows_581.html' title='YaKuake dla Windows?'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-5175884866770026086</id><published>2007-02-04T13:34:00.006-08:00</published><updated>2012-01-19T08:50:57.376-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='unsorted ramblings'/><title type='text'>Sane defaults</title><content type='html'>&lt;p&gt;Tytuł można przetłumaczyć jako "rozsądna konfiguracja domyślna", ale to sformułowanie nie brzmi niestety tak dobrze jak angielski oryginał. O co chodzi? O to, że spora część programistów nie zdaje sobie sprawy jak ważne jest, by zaraz po instalacji oprogramowanie działało poprawnie i &lt;strong&gt;bezpiecznie&lt;/strong&gt;. Spora część użytkowników nie będzie w ogóle zaglądać w rozbudowane opcje konfiguracyjne. A jeśli to nawet zrobi, to dopiero po dłuższym korzystaniu z programu. Dlatego ważne jest, aby świeżo zainstalowany &lt;em&gt;software&lt;/em&gt; nie tworzył luk w bezpieczeństwie systemu. Przykłady zdecydowanie złych pomysłów domyślnej konfiguracji (głównie z projektów, w których uczestniczyłem, ale nie tylko):&lt;/p&gt;&lt;br/&gt;&lt;ul&gt;&lt;br/&gt;&lt;li&gt;użytkownik bazy danych: root, brak hasła&lt;/li&gt;&lt;br/&gt;&lt;li&gt;zapisywanie danych w &lt;code&gt;/&lt;/code&gt; lub &lt;code&gt;d:/&lt;/code&gt; lub dowolnej innej absolutnej lokacji (za wyjątkiem &lt;code&gt;/tmp&lt;/code&gt; albo &lt;code&gt;%TMP%&lt;/code&gt;, zależnie od systemu)&lt;/li&gt;&lt;br/&gt;&lt;li&gt;kasowanie wszystkich danych z takiej lokacji (czyszczenie dysku twardego uszczęśliwia mało którego użytkownika)&lt;/li&gt;&lt;br/&gt;&lt;li&gt;zapis do &lt;code&gt;/tmp&lt;/code&gt; albo &lt;code&gt;%TMP%&lt;/code&gt; przez aplikację wieloplatformową&lt;/li&gt;&lt;br/&gt;&lt;li&gt;zakładanie, że aplikacja będzie uruchamiana z uprawnieniami administratora / roota&lt;/li&gt;&lt;br/&gt;&lt;li&gt;używanie / lub \ w zapisie ścieżek do podkatalogów&lt;/li&gt;&lt;br/&gt;&lt;/ul&gt;&lt;p&gt;Rozsądne alternatywy:&lt;/p&gt;&lt;ul&gt;&lt;br/&gt;&lt;li&gt;użytkownik kojarzący się z nazwą programu, hasło najlepiej generowane losowo w trakcie instalacji&lt;/li&gt;&lt;br/&gt;&lt;li&gt;zapis w podkatalogu &lt;code&gt;%APPDATA%&lt;/code&gt; lub &lt;code&gt;~&lt;/code&gt; (nie dotyczy demonów / usług, zazwyczaj nie posiadających katalogu domowego)&lt;/li&gt;&lt;br/&gt;&lt;li&gt;kasowanie tylko plików utworzonych przez aplikację&lt;/li&gt;&lt;br/&gt;&lt;li&gt;korzystanie z &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/io/File.html#createTempFile(java.lang.String,%20java.lang.String)"&gt;File.createTempFile&lt;/a&gt; lub &lt;a href="http://msdn2.microsoft.com/en-us/library/system.io.path.gettempfilename.aspx"&gt;Path.GetTempFileName&lt;/a&gt;&lt;/li&gt;&lt;br/&gt;&lt;li&gt;zakładanie, że program zazwyczaj nie ma praw zapisu do katalogu, w którym jest zainstalowany&lt;/li&gt;&lt;br/&gt;&lt;li&gt;korzystanie z &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/io/File.html#separator"&gt;File.separator&lt;/a&gt; lub &lt;a href="http://msdn2.microsoft.com/en-us/library/system.io.path.directoryseparatorchar.aspx"&gt;Path.DirectorySeparatorChar&lt;/a&gt;&lt;/li&gt;&lt;br/&gt;&lt;/ul&gt;&lt;br/&gt;&lt;p&gt;Zdaję sobie sprawę, że nie ma szans, by użytkownicy windowsów przestali wykorzystywać konto administratora do normalnej pracy (próba częściowego wymuszenia tego przez Vistę jest chyba głównym źródłem problemów z uruchamianymi na niej programami). Ale programista powinien pamiętać, że usługi / demony uruchamiane są zazwyczaj z kont stworzonych dla nich osobnych użytkowników o okrojonych uprawnieniach. A jedynym elementem aplikacji, który próbuje cokolwiek zapisywać do jej katalogu instalacyjnego powinien być &lt;em&gt;updater&lt;/em&gt;.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Jeszcze jedna ważna uwaga: pliki konfiguracyjne &lt;strong&gt;nie&lt;/strong&gt; powinny być wersjonowane. Zamiast tego, do kontroli wersji najlepiej dodać plik z rozszerzeniem w rodzaju &lt;code&gt;.example&lt;/code&gt;, zawierający przykładową konfigurację wraz z komentarzem, a właściwy plik konfiguracyjny oznaczyć jako ignorowany. W ten sposób programiści nie ryzykują przypadkowego wysłania do repozytorium swoich indywidualnych plików z ustawieniami. Oczywiście, przy takim podejściu aplikacja musi sobie radzić z brakiem pliku konfiguracyjnego - informując, że należy go stworzyć na podstawie przykładu lub robiąc to automagicznie. &lt;em&gt;Fallback&lt;/em&gt; do wbudowanej konfiguracji jest często spotykanym złym pomysłem - użytkownik nie ma wtedy możliwości modyfikacji opcji, musi albo stworzyć konfigurację od zera albo zaakceptować ją w całości.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-5175884866770026086?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/5175884866770026086/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2007/02/sane-defaults_1603.html#comment-form' title='Komentarze (2)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/5175884866770026086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/5175884866770026086'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2007/02/sane-defaults_1603.html' title='Sane defaults'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-4167594983501950306</id><published>2007-01-25T13:42:00.006-08:00</published><updated>2012-01-19T08:50:57.351-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unsorted ramblings'/><title type='text'>Koniec monopolu?</title><content type='html'>&lt;p&gt;Dobre wieści dla korzystających z Neostrady TP. Zgodnie z zawartą w zeszłym roku umową między TPSA a Netią, od 15 marca zasięg usługi Net24 (ADSL)  ulegnie rozszerzeniu praktycznie na wszystkich aktualnie korzystających z Neostrady. Netia przygotowała &lt;a href="http://www.netia.pl/promocje,dla_domu,21.html"&gt;specjalny cennik&lt;/a&gt; dla chętnych do zmiany dostawcy dostępu do internetu. Oferta jest bardzo atrakcyjna cenowo (125 złotych miesięcznie, brutto, za łącze 6Mbps/256kbps !) a co więcej, nie posiada limitu transferu. Jeśli choć raz TPSA przycięła Ci kurek do 4KBps - wiesz, jak to boli.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Cała sprawa jest o tyle bardziej interesująca, że TPSA została właśnie zmuszona do zmiany regulaminu świadczenia usługi Neostrada. A to oznacza (&lt;a href="http://www.tp.pl/b/binaries/PL/589307974359/regulamin___swiadczenia_uslugi_neostrada_tp_do_01.12.2006_365744397.pdf"&gt;patrz § 33 p. 1,3 - pdf&lt;/a&gt;), że abonent może wypowiedzieć umowę, nawet zawartą na czas określony, bez płacenia molochowi odszkodowania. W takim wypadku należy zgłosić rozwiązanie umowy do 14 lutego, 15 lutego wejdzie ono w życie. Haczyk jest jeden - czy jesteś w stanie przeżyć miesiąc (15 lutego - 15 marca) bez sieci?&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Korzystanie z Net24 nie oznacza rozwiązania umowy z TPSA o abonament telefoniczny, ale pozwala zmniejszyć go nawet do planu socjalnego. Jest też możliwość przeniesienia abonamentu do np. Tele2, o ile nie zmieni to parametrów technicznych łącza (czyli wg. Biura Obsługi Klienta Tele2 - będzie działać).&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Nie, to nie jest artykuł sponsorowany. To tylko wynik wściekłości osobnika, którego łącze nagle nie pozwala czytać stron internetowych, jeśli nie wyłączy się w przeglądarce pobierania obrazków. A i wtedy jest kiepsko. Tak, przekroczyłem limit...&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-4167594983501950306?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/4167594983501950306/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2007/01/koniec-monopolu_9969.html#comment-form' title='Komentarze (9)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/4167594983501950306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/4167594983501950306'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2007/01/koniec-monopolu_9969.html' title='Koniec monopolu?'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-1996747823599917081</id><published>2007-01-20T08:00:00.006-08:00</published><updated>2012-01-19T08:50:57.275-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>Sprawdzanie wydajności</title><content type='html'>&lt;p&gt;Często zdarza się sytuacja, gdy programista ma kilka pomysłów na zaimplementowanie jednej operacji. Albo do jednego problemu pasuje parę algorytmów, każdy ma swoje zalety i nie do końca wiadomo, który wybrać. Zazwyczaj pisze się wtedy kawałek kodu do szybkiego zmierzenia czasu wykonywania i zapomina o nim po wykorzystaniu. Celem zaoszczędzenia kilku minut następnym razem, wrzucam w sieć &lt;a href="http://konie.wlkp.pl/skolima/PerformanceTestRunner.cs"&gt;prostą klasę do porównywania wydajności&lt;/a&gt;.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Mały wyjaśnienie dla dociekliwych: klasa napisana jest tak, by pomiary nie uwzględniały czasu pierwszej kompilacji wykonywanych metod oraz czasu ładowania potrzebnych bibliotek do pamięci. Pomiar wykonywany jest za pomocą &lt;code&gt;DateTime.UtcNow&lt;/code&gt; - ta metoda jest nieco szybsza od zwykłego &lt;code&gt;Now&lt;/code&gt;, ponieważ nie musi uwzględniać stref czasowych. Ma też tą przewagę nad odwołaniami do API windows, że działa pod linuksem. A mniejszą nieco dokładność łatwo zniwelować odpowiednio zwiększając liczbę wykonań testu.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Przykład wykorzystania:&lt;/p&gt;&lt;br/&gt;&lt;pre&gt;static void Main(string[] args)&lt;br/&gt; {&lt;br/&gt; 	PerformanceTestRunner ptr = new PerformanceTestRunner(100000); // liczba przebiegów do wykonania&lt;br/&gt; 	ptr["Something Old"] = new TestMethod(TestSomething);&lt;br/&gt; 	ptr["Something New"] = new TestMethod(TestOtherWay);&lt;br/&gt; 	ptr.Run(1000); // parametr do przekazania metodzie testującej&lt;br/&gt; }&lt;br/&gt;&lt;br/&gt; private static void TestSomething(Object o)&lt;br/&gt; { // tutaj trafia kod do sprawdzenia&lt;br/&gt; }&lt;br/&gt;&lt;br/&gt; private static void TestOtherWay(Object o)&lt;br/&gt; { // tutaj trafia kod do sprawdzenia&lt;br/&gt; }&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-1996747823599917081?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/1996747823599917081/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2007/01/sprawdzanie-wydajnosci_1085.html#comment-form' title='Komentarze (2)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/1996747823599917081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/1996747823599917081'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2007/01/sprawdzanie-wydajnosci_1085.html' title='Sprawdzanie wydajności'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-9085463403196965164</id><published>2006-11-28T16:41:00.006-08:00</published><updated>2012-01-19T08:50:57.482-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='en'/><category scheme='http://www.blogger.com/atom/ns#' term='gadgets'/><title type='text'>Leadtek Winfast TV2000 XP on gentoo (part 1 - infrared remote)</title><content type='html'>&lt;p&gt;The TV2000 XP is a tv/radio tuner card with a video input slot and an infrared pilot (CoolCommand). It is based on Conexant CX23880/1/2/3 PCI Video and Audio Decoder. Complete output of &lt;code&gt;lspci -vv&lt;/code&gt; looks like this:&lt;/p&gt;&lt;br/&gt;&lt;pre&gt;02:02.0 Multimedia video controller: Conexant CX23880/1/2/3 PCI Video and Audio Decoder (rev 05)&lt;br/&gt;        Subsystem: LeadTek Research Inc. Unknown device 6611&lt;br/&gt;        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-&lt;br/&gt;        Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium &gt;TAbort- &amp;lt;TAbort- &amp;lt;MAbort- &gt;SERR- &amp;lt;PERR-&lt;br/&gt;        Latency: 32 (5000ns min, 13750ns max), Cache Line Size 08&lt;br/&gt;        Interrupt: pin A routed to IRQ 22&lt;br/&gt;        Region 0: Memory at fa000000 (32-bit, non-prefetchable) [size=16M]&lt;br/&gt;        Capabilities: [44] Vital Product Data&lt;br/&gt;        Capabilities: [4c] Power Management version 2&lt;br/&gt;                Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)&lt;br/&gt;                Status: D0 PME-Enable- DSel=0 DScale=0 PME-&lt;br/&gt;&lt;/pre&gt;&lt;br/&gt;&lt;p&gt;Linux kernel (2.6.17) contains drivers for this device in the Video For Linux section. You have to enable the following options:&lt;/p&gt;&lt;br/&gt;&lt;pre&gt;Device Drivers ---&gt;&lt;br/&gt;   Multimedia Devices ---&gt;&lt;br/&gt;      &amp;lt;*&gt; Video For Linux&lt;br/&gt;      [*]   Enable Video For Linux API 1 (DEPRECATED)&lt;br/&gt;      [*]   Enable Video For Linux API 1 compatible Layer&lt;br/&gt;      Video Capture Adapters ---&gt;&lt;br/&gt;         &amp;lt;M&gt; Conexant 2388x (bt878 successor) support&lt;br/&gt;         &amp;lt;M&gt; Conexant 2388x DMA audio support&lt;/pre&gt;&lt;br/&gt;&lt;p&gt;For the infrared pilot to work you have to enable the evdev event interface:&lt;/p&gt;&lt;br/&gt;&lt;pre&gt;Device Drivers  ---&gt;&lt;br/&gt;   Input Device Support  ---&gt;&lt;br/&gt;      &amp;lt;*&gt; Event Interface&lt;/pre&gt;&lt;br/&gt;&lt;p&gt;Now recompile (&lt;code&gt;make install &amp;amp;&amp;amp; make modules modules_install&lt;/code&gt; for gentoo-sources) and reboot. After the system boots again, load the module &lt;code&gt;cx8800&lt;/code&gt; (&lt;code&gt;modprobe cx8800&lt;/code&gt;). &lt;code&gt;dmesg | tail -n 15&lt;/code&gt; should report something similar to this:&lt;/p&gt;&lt;br/&gt;&lt;pre&gt;cx2388x v4l2 driver version 0.0.5 loaded&lt;br/&gt;ACPI: PCI Interrupt 0000:02:02.0[A] -&gt; GSI 22 (level, low) -&gt; IRQ 22&lt;br/&gt;CORE cx88[0]: subsystem: 107d:6611, board: Leadtek Winfast 2000XP Expert [card=5,autodetected]&lt;br/&gt;TV tuner 44 at 0x1fe, Radio tuner -1 at 0x1fe&lt;br/&gt;cx88[0]: Leadtek Winfast 2000XP Expert config: tuner=38, eeprom[0]=0x01&lt;br/&gt;input: cx88 IR (Leadtek Winfast 2000XP as /class/input/input2&lt;br/&gt;cx88[0]/0: found at 0000:02:02.0, rev: 5, irq: 22, latency: 32, mmio: 0xfa000000&lt;br/&gt;tuner 0-0060: All bytes are equal. It is not a TEA5767&lt;br/&gt;tuner 0-0060: chip found @ 0xc0 (cx88[0])&lt;br/&gt;tuner 0-0060: type set to 38 (Philips PAL/SECAM multi (FM1216ME MK3))&lt;br/&gt;tda9887 0-0043: chip found @ 0x86 (cx88[0])&lt;br/&gt;cx88[0]/0: registered device video0 [v4l2]&lt;br/&gt;cx88[0]/0: registered device vbi0&lt;br/&gt;cx88[0]/0: registered device radio0&lt;br/&gt;&lt;/pre&gt;&lt;br/&gt;&lt;p&gt;and &lt;code&gt;ls -l /dev/v4l/&lt;/code&gt; should show devices radio0, vbi0 and video0, all belonging to user root and group video. Also, please note the line &lt;code&gt;input: cx88 IR (Leadtek Winfast 2000XP as /class/input/input2&lt;/code&gt;. There should be a new event device in &lt;code&gt;/dev/input/&lt;/code&gt; with the same number (in this case, it will be &lt;code&gt;/dev/input/event2&lt;/code&gt;). Unfortunately, device's name depends on the order in which devices are created by udev, and this might change. In order to find a static name of the remote, inspect the &lt;code&gt;/dev/input/by-path&lt;/code&gt; directory. It contains device symlinks that udev created using devices' physical addresses. This is enough for a PCI card, because it will be constatant as long as the slot the card is plugged won't change. In my case, the infrared control is visible as &lt;code&gt;/dev/input/by-path/pci-0000:02:03.0--event-ir&lt;/code&gt;.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Add &lt;code&gt;cx8800&lt;/code&gt; to &lt;code&gt;/etc/modules.autoload/kernel-2.6&lt;/code&gt; , so it will be loaded each time system starts. Now, in your &lt;code&gt;/etc/make.conf&lt;/code&gt;, add &lt;code&gt;lirc v4l v4l2&lt;/code&gt; to USE flags and add a line &lt;code&gt;LIRC_DEVICES="devinput"&lt;/code&gt;. Although lirc has a driver for Leadtek Winfast TV2000 XP (named leadtek_0010), I was unable to get it to work under kernel 2.6.17 (it did not create a device node, and all attempts to use it resulted in lircd crashing and irw reporting "could not connect to socket"). Emerge lirc (and kdelirc if you want an easy way to control all KDE applications with your remote) and then execute &lt;code&gt;emerge -avuDN world&lt;/code&gt;.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;First, check if the remote works. Run &lt;code&gt;lircd -d /dev/input/by-path/pci-0000:02:03.0--event-ir -n&lt;/code&gt; and press some buttons on the remote. Lircd should report them (although, sadly, not all keys work through the event interface). Edit &lt;code&gt;/etc/conf.d/lircd&lt;/code&gt; and set &lt;code&gt;LIRCD_OPTS="-d /dev/input/by-path/pci-0000:02:03.0--event-ir"&lt;/code&gt; (change the path to match your configuration). Save &lt;a href="http://konie.wlkp.pl/skolima/lircd.conf"&gt;Leadtek Winfast TV2000 XP lirc configuration&lt;/a&gt; as &lt;code&gt;/etc/lircd.conf&lt;/code&gt;. Save &lt;a href="http://konie.wlkp.pl/skolima/lircrc"&gt;lirc configuration for xmms, mplayer and vlc&lt;/a&gt; as &lt;code&gt;/etc/lircrc&lt;/code&gt;.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Now kill the manually started daemon and start the system one (&lt;code&gt;/etc/init.d/lircd start&lt;/code&gt;). Add it to the runlevel (&lt;code&gt;rc-update add lircd default&lt;/code&gt;). Start xmms/mplayer/vlc to test how your remote works. If you encounter any problems, verify that &lt;code&gt;irw&lt;/code&gt; reports key names correctly.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-9085463403196965164?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/9085463403196965164/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2006/11/leadtek-winfast-tv2000-xp-on-gentoo_8182.html#comment-form' title='Komentarze (12)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/9085463403196965164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/9085463403196965164'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2006/11/leadtek-winfast-tv2000-xp-on-gentoo_8182.html' title='Leadtek Winfast TV2000 XP on gentoo (part 1 - infrared remote)'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-680385819331240635</id><published>2006-11-18T12:42:00.006-08:00</published><updated>2012-01-19T08:50:57.416-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gadgets'/><title type='text'>Gry są złe</title><content type='html'>&lt;p&gt;Złe, niedobre i powinny być zakazane. Koniecznie. Od ponad roku żadnej dłużej niż jeden dzień na dysku nie zostawiłem, myślałem, że już mnie nie bawią... A potem trafił się &lt;a href="http://www.uesp.net/wiki/Oblivion:Oblivion"&gt;Oblivion&lt;/a&gt;. Teoretycznie nie powinien w ogóle ruszać na moim archaicznym sprzęcie, ale trochę kombinowania (głównie za pomocą &lt;a href="http://www.oldblivion.com/"&gt;Oldblivion&lt;/a&gt;) i udało się uzyskać całkiem porządną jakość. A przynajmniej tak mi się wydawało.&lt;/p&gt;&lt;br/&gt;&lt;a href="http://konie.wlkp.pl/skolima/jogger/gpu_oblivion_before.jpg" rel="lightbox" title="Oblivion na GeForce Ti4200"&gt;&lt;img height="150" width="200" src="http://konie.wlkp.pl/skolima/jogger/thumbs/gpu_oblivion_before.jpg" alt="Widok na Imperial City" title="Oblivion na GeForce Ti4200" /&gt;&lt;/a&gt;&lt;br/&gt;&lt;p&gt;PiBis odwiedził mnie i przyniósł swojego nowiutkiego laptopa. Trzeba było czymś pomęczyć nową maszynkę, wybór padł właśnie na Oblivion. I to był błąd. Zobaczyłem fale na wodzie, trawę ruszającą się pod wpływem wiatru i motyle fruwające nad kwiatami. Poległem. Jak powszechnie wiadomo, faceci są jak małe dzieci, tylko mają więcej pieniędzy. W związku z czym mam teraz nieco mniej pieniędzy (ale w granicach rozsądku, na całe szczęście) a Oblivion u mnie wygląda tak:&lt;/p&gt;&lt;br/&gt;&lt;a href="http://konie.wlkp.pl/skolima/jogger/gpu_oblivion_after.jpg" rel="lightbox" title="Oblivion na GeForce GS 7600"&gt;&lt;img height="150" width="200" src="http://konie.wlkp.pl/skolima/jogger/thumbs/gpu_oblivion_after.jpg" alt="Widok na Imperial City" title="Oblivion na GeForce GS 7600" /&gt;&lt;/a&gt;&lt;br/&gt;&lt;p&gt;Ten sam widok chwilę później, gdy opadła mgła:&lt;/p&gt;&lt;br/&gt;&lt;a href="http://konie.wlkp.pl/skolima/jogger/gpu_oblivion.jpg" rel="lightbox" title="Oblivion na GeForce GS 7600"&gt;&lt;img height="150" width="200" src="http://konie.wlkp.pl/skolima/jogger/thumbs/gpu_oblivion.jpg" alt="Widok na Imperial City" title="Oblivion na GeForce GS 7600" /&gt;&lt;/a&gt;&lt;br/&gt;&lt;p&gt;Pierwszy raz w grze zdarzyło mi się, że mając wejść do jakiegoś lochu, stałem 5 minut przed wejściem patrząc na zachodzące słońce. Grafika w tej grze powala, wycieczka po zapomnianej świątyni potrafi naprawdę przestraszyć: po wypalenu się ostatniej pochodni z ekwipunku, korzystając ze słabiutkiego światła rzucanego przez zaklęcie wypatrywałem kolejnej pułapki i aż podskoczyłem, gdy z za narożnika wymaszerował na mnie szkielet.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;A przechodząc na temat bardziej techniczny: z mojej obsesji już się zwierzałem, tym razem jej efektem był wybór karty z pasywnym chłodzeniem.&lt;/p&gt;&lt;br/&gt;&lt;a href="http://konie.wlkp.pl/skolima/jogger/gpu_karta_pudlo.jpg" rel="lightbox" title="Nowa karta przed wyjęciem z opakowania"&gt;&lt;img height="150" width="200" src="http://konie.wlkp.pl/skolima/jogger/thumbs/gpu_karta_pudlo.jpg" alt="Gigabyte GS 7600 w opakowaniu" title="Nowa karta przed wyjęciem z opakowania" /&gt;&lt;/a&gt;&lt;br/&gt;&lt;p&gt;Zabawka jest nieco krótsza od poprzedniej (którą, notabene, z bólem serca &lt;a href="http://allegro.pl/item143271307_msi_geforce_ti_4200_64mb_agp4x_tv_out_nv_silencer.html"&gt;oddam w dobre ręce&lt;/a&gt;) i zdecydowanie chudsza.&lt;/p&gt;&lt;br/&gt;&lt;a href="http://konie.wlkp.pl/skolima/jogger/gpu_karty_back.jpg" rel="lightbox" title="GeForce Ti 4200 i GS 7600"&gt;&lt;img height="165" width="150" src="http://konie.wlkp.pl/skolima/jogger/thumbs/gpu_karty_back.jpg" alt="karty graficzne od spodu" title="GeForce Ti 4200 i GS 7600" /&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://konie.wlkp.pl/skolima/jogger/gpu_karty_front.jpg" rel="lightbox" title="GeForce Ti 4200 i GS 7600"&gt;&lt;img height="165" width="150" src="http://konie.wlkp.pl/skolima/jogger/thumbs/gpu_karty_front.jpg" alt="karty graficzne od góry" title="GeForce Ti 4200 i GS 7600" /&gt;&lt;/a&gt;&lt;br/&gt;&lt;p&gt;&lt;a href="http://www.gigabyte.com.tw/Products/VGA/Products_Overview.aspx?ProductID=2334"&gt;GV-N76G256D-RH&lt;/a&gt;: na pokładzie 256 MB pamięci DDR2, magistrala AGP 8x. Wynik 3DMark 2005: 3680 punktów, po minimalnym podkręceniu: 3810 punktów. GlxGears na starej karcie wyciągały do 3k FPS, na nowej 6k FPS.  Co mnie lekko zaskoczyło, karta ma też osobne gniazdo zasilania. Takie czasy... Przysporzyło mi to nieco problemów - w pogoni za ciszą wymieniłem jakiś czas temu zasilacz (nowy ma wentrylator o średnicy 12 centymetrów i odpinane kable), potem obudowę (wentylatory, a jakże, 12 centymetrów, do tego zasilacz umieszczony na dole, w osobnej komorze), a teraz okazało się, że muszę przeciągnąć dodatkowy kabel zasilający. Chwilę to trwało, kabli w przejściu między jedną a drugą komorą obudowy jest dość dużo.&lt;/p&gt;&lt;br/&gt;&lt;a href="http://konie.wlkp.pl/skolima/jogger/gpu_zasilanie.jpg" rel="lightbox" title="Kable zasilające"&gt;&lt;img height="150" width="200" src="http://konie.wlkp.pl/skolima/jogger/thumbs/gpu_zasilanie.jpg" alt="Plątania kabli zasilających w obudowie" title="Kable zasilające" /&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://konie.wlkp.pl/skolima/jogger/gpu_karta_na_miejscu.jpg" rel="lightbox" title="Karta na swoim miejscu"&gt;&lt;img height="150" width="200" src="http://konie.wlkp.pl/skolima/jogger/thumbs/gpu_karta_na_miejscu.jpg" alt="Karta na swoim miejscu" title="Karta na swoim miejscu" /&gt;&lt;/a&gt;&lt;br/&gt;&lt;p&gt;Z instalacją w systemie poszło już gładko. Windows oczywiście pokrzyczał trochę, kazał się ponownie aktywować (a niech mu będzie, w końcu &lt;a href="http://msdn62.e-academy.com/elms/Storefront/Home.aspx?campus=ppoz_wiiz"&gt;Politechnika funduje studentom oryginały&lt;/a&gt;), restartował sie 3 razy w trakcie instalowania sterowników. Gentoo podeszło do sprawy tak spokojnie, że zacząłem się obawiać, iż coś jest nie tak. Sprawdziłem, co zgłasza &lt;code&gt;lspci&lt;/code&gt; oraz jak wygląda wynik &lt;code&gt;glxgears&lt;/code&gt; i zostałem przyjemnie zaskoczony - sterowniki nVidii, bez żadnej ingerencji ze strony użytkownika, wykryły i obsłużyły zmienioną kartę.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Wczoraj usłyszałem upragniony od dawna komplement: szwagier wszedł do pokoju i poprosił, żebym włączył komputer.  Wreszcie mogłem odpowiedzieć: "Przecież jest włączony!"&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-680385819331240635?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/680385819331240635/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2006/11/gry-sa-ze_7834.html#comment-form' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/680385819331240635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/680385819331240635'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2006/11/gry-sa-ze_7834.html' title='Gry są złe'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-3450328706407993520</id><published>2006-11-17T14:51:00.006-08:00</published><updated>2012-01-19T08:50:57.323-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Gentoo jest lepsze</title><content type='html'>&lt;p&gt;Mammal chwalił się wczoraj, że &lt;a href="http://mammal.jogger.pl/2006/11/16/wolnosc/"&gt;Ubuntu jest szybkie&lt;/a&gt;. Ale to nic w porównaniu z Gentoo &lt;a href="http://konie.wlkp.pl/skolima/jogger/fast_gentoo.png" title="jak fajnie mieć światłowód" rel="lightbox"&gt;&lt;img src="http://konie.wlkp.pl/skolima/jogger/thumbs/fast_gentoo.png" width="124" height="17" alt="z prędkością 4818KB/sek" /&gt;&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-3450328706407993520?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/3450328706407993520/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2006/11/gentoo-jest-lepsze_6909.html#comment-form' title='Komentarze (4)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/3450328706407993520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/3450328706407993520'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2006/11/gentoo-jest-lepsze_6909.html' title='Gentoo jest lepsze'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-5782605706718251510</id><published>2006-10-21T09:31:00.006-07:00</published><updated>2012-01-19T08:50:57.390-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unsorted ramblings'/><title type='text'>phpBB, RSS, automatyczne logowanie i Google Reader</title><content type='html'>&lt;p&gt;If you do not speak Polish, please take a look at &lt;a href="http://www.phpbb.com/phpBB/viewtopic.php?p=2157922#2157922"&gt;phpBB support forums&lt;/a&gt;.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Dla forum phpBB powstało kilka skryptów generujących feed &lt;a href="http://pl.wikipedia.org/wiki/Really_Simple_Syndication"&gt;&lt;abbr title="Really Simple Syndication" lang="en"&gt;RSS&lt;/abbr&gt;&lt;/a&gt;. Ja od dłuższego czasu używam &lt;a href="http://www.phpbb.com/phpBB/viewtopic.php?t=254606"&gt;RSS Feed 2.2.4&lt;/a&gt; i jestem z niego zadowolony. Problemem okazał się dopiero &lt;a href="http://google.com/reader/"&gt;Google Reader&lt;/a&gt;. RSS Feed mod obsługuje fora wymagające specjalnych uprawnień użytkownika by je obejrzeć,  ale w tym celu wymaga istnienia ciasteczka autologinu (jeśli czytamy RSS z przeglądarki) lub prosi o zalogowanie poprzez mechanizmy wbudowane w protokół &lt;a href="http://pl.wikipedia.org/wiki/HTTP"&gt;&lt;abbr title="Hyper Text Transfer Protocol" lang="en"&gt;HTTP&lt;/abbr&gt;&lt;/a&gt;. Niestety żaden czytnik online nie potrafi obsłużyć tej funkcjonalności.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Sposób na obejście tego ograniczenia podpatrzyłem na &lt;a href="http://olorin.info/"&gt;blogu Olórina&lt;/a&gt; - nazwa użytkownika i hasło przekazywane są w żądaniu GET, jako część &lt;a href="http://pl.wikipedia.org/wiki/URL_%28informatyka%29"&gt;&lt;abbr title="Uniform Resource Locator" lang="en"&gt;URL&lt;/abbr&gt;&lt;/a&gt;. Oczywiście hasło nie jest wysyłane w postaci jawnej, a jako &lt;a href="http://pl.wikipedia.org/wiki/Funkcja_haszuj%C4%85ca"&gt;skrót (hasz)&lt;/a&gt;. W oryginalnym skrypcie wystarczyły drobne zmiany i wszystko działa.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Przechodząc do konkretów: pobrać można &lt;a href="http://konie.wlkp.pl/skolima/rss_phpbb_magical_login.diff"&gt;patch&lt;/a&gt; lub &lt;a href="http://konie.wlkp.pl/skolima/rss_phpbb_magical_login.zip"&gt;zmodyfikowane pliki&lt;/a&gt;. Jeśli chcesz dodać jeszcze informację do FAQ dla użytkowników forum, możesz skopiować ode mnie z &lt;a href="http://ad-astra.konie.wlkp.pl/faq.php#37"&gt;forum poznańskiego klubu fantastyki Ad Astra&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-5782605706718251510?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/5782605706718251510/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2006/10/phpbb-rss-automatyczne-logowanie-i_2708.html#comment-form' title='Komentarze (3)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/5782605706718251510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/5782605706718251510'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2006/10/phpbb-rss-automatyczne-logowanie-i_2708.html' title='phpBB, RSS, automatyczne logowanie i Google Reader'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-7464364884777833608</id><published>2006-09-05T02:14:00.006-07:00</published><updated>2012-01-19T08:50:57.431-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='en'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>NAnt, NUnit and mono 1.1.17</title><content type='html'>&lt;p&gt;The new release of &lt;a href="http://www.mono-project.com/Main_Page"&gt;mono&lt;/a&gt; contains various bug fixes, many of them concerning the &lt;code&gt;AppDomain&lt;/code&gt; class, creation of application domains and communication between them. Unfortunately, those changes broke the &lt;code&gt;&amp;lt;nunit2&gt;&lt;/code&gt; task in NAnt scripts run on Linux (strangely, everything works fine on Windows). When executed, task reports an incompatible version of NUnit assembly used to compile the tests. However, when nant is run with &lt;code&gt;-verbose&lt;/code&gt; switch, the real exception can be examined - &lt;code&gt;mono&lt;/code&gt; is unable to load the &lt;code&gt;NAnt.NUnit2Tasks.dll&lt;/code&gt; into the new &lt;code&gt;AppDomain&lt;/code&gt;.&lt;/p&gt;&lt;EXCERPT&gt;&lt;br/&gt;&lt;p&gt;A temporary workaround is to execute the tests with the &lt;code&gt;&amp;lt;exec&gt;&lt;/code&gt; task. Start with defining a template target:&lt;/p&gt;&lt;br/&gt;&lt;pre&gt;&lt;br/&gt;&amp;lt;target name="test-assembly"&gt;&lt;br/&gt;  &amp;lt;if test="${platform::is-unix()}"&gt;&lt;br/&gt;  &amp;lt;!-- nunit2 task is borked on linux with mono 1.1.17 --&gt;&lt;br/&gt;    &amp;lt;property&lt;br/&gt;      name="nunit.exe"&lt;br/&gt;      value="${framework::get-assembly-directory(framework::get-target-framework())}/nunit-console.exe" /&gt;&lt;br/&gt;    &amp;lt;echo message="${test-assembly}" /&gt;&lt;br/&gt;    &amp;lt;exec program="${nunit.exe}" workingdir="${binaries-dir}" useruntimeengine="true"&gt;&lt;br/&gt;      &amp;lt;arg value="/nologo" /&gt;&lt;br/&gt;      &amp;lt;arg value="${test-assembly}" /&gt;&lt;br/&gt;    &amp;lt;/exec&gt;&lt;br/&gt;  &amp;lt;/if&gt;&lt;br/&gt;  &amp;lt;if test="${not platform::is-unix()}"&gt;&lt;br/&gt;    &amp;lt;nunit2 verbose="true"&gt;&lt;br/&gt;      &amp;lt;test assemblyname="${binaries-dir}/${test-assembly}" /&gt;&lt;br/&gt;      &amp;lt;formatter type="Plain" /&gt;&lt;br/&gt;    &amp;lt;/nunit2&gt;&lt;br/&gt;  &amp;lt;/if&gt;&lt;br/&gt;&amp;lt;/target&gt;&lt;br/&gt;&lt;/pre&gt;&lt;br/&gt;&lt;p&gt;The target still calls &lt;code&gt;&amp;lt;nunit2&gt;&lt;/code&gt; task when run on Windows, as it is faster then executing &lt;code&gt;nunit-console.exe&lt;/code&gt;. On Linux it finds the &lt;code&gt;nunit-console.exe&lt;/code&gt; from the appropriate framework version and uses it to execute the test. To use the template, two properties have to be set:&lt;/p&gt;&lt;br/&gt;&lt;pre&gt;&lt;br/&gt;&amp;lt;target name="TestObject.test" depends="TestObject.dll"&gt;&lt;br/&gt;  &amp;lt;property name="binaries-dir" value="bin_test"/&gt;&lt;br/&gt;  &amp;lt;property name="test-assembly" value="TestObject.dll" /&gt;&lt;br/&gt;  &amp;lt;call target="test-assembly" /&gt;&lt;br/&gt;&amp;lt;/target&gt;&lt;br/&gt;&lt;/pre&gt;&lt;br/&gt;&lt;p&gt;You can hardcode the &lt;code&gt;binaries-dir&lt;/code&gt; or set it once for the entire build to avoid repeating it in every call to &lt;code&gt;test-assembly&lt;/code&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-7464364884777833608?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/7464364884777833608/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2006/09/nant-nunit-and-mono-1117_4074.html#comment-form' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/7464364884777833608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/7464364884777833608'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2006/09/nant-nunit-and-mono-1117_4074.html' title='NAnt, NUnit and mono 1.1.17'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-1363567040794748548</id><published>2006-09-05T01:37:00.006-07:00</published><updated>2012-01-19T08:50:57.261-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gadgets'/><title type='text'>D-Link G604T</title><content type='html'>&lt;p&gt;W piątek odebrany z drugiej naprawy serwisowej. Za pierwszym razem (po dłuższej pracy zaczynał gubić pakiety, moc sygnału skakała zupełnie losowo, firewall - wylączony! - odcinał nagle połączenie itd.) - 3 tygodnie w serwisie i dostałem nowy sprzęt. Zgodnie z instrukcjami producenta zabrałem sie do instalacji nowego firmware'u i na tym sie skończyło. Instalator sie wysypał, router umarł. Druga naprawa poszła szybciej - szybciej tez access point zepsuł sie ponownie. W niedziele (niecałe dwa dni pracy!) zaczął szwankować cache &lt;a href="http://en.wikipedia.org/wiki/Dns"&gt;&lt;acronym title="Domain Name System" lang="en"&gt;DNS&lt;/acronym&gt;&lt;/a&gt;. Wylączylem cache - wszystko wróciło do normy, ale nieopatrznie chciałem zapisać zmiany. To wymaga restartu urządzenia... Po którym nie podniósł sie juz interfejs &lt;a href="http://en.wikipedia.org/wiki/Wifi"&gt;WiFi&lt;/a&gt;. Owszem, jestem w stanie go włączyć ponownie - pod warunkiem, ze wepnę sie do routera poprzez kabel ethernetowy. Wspaniale. Nie chce kolejnej naprawy, chce pieniądze z powrotem, D-Link nie nadaje sie do użytku.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-1363567040794748548?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/1363567040794748548/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2006/09/d-link-g604t_6592.html#comment-form' title='Komentarze (1)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/1363567040794748548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/1363567040794748548'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2006/09/d-link-g604t_6592.html' title='D-Link G604T'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-4108968988564934310</id><published>2006-08-08T14:42:00.006-07:00</published><updated>2012-01-19T08:50:57.349-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unsorted ramblings'/><title type='text'>Piwo za darmo!</title><content type='html'>Po szczegóły zapraszam na &lt;a href="http://skolima.deviantart.com/journal/9646228/" &gt;dewiacje skolimy&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-4108968988564934310?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/4108968988564934310/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2006/08/piwo-za-darmo_7849.html#comment-form' title='Komentarze (1)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/4108968988564934310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/4108968988564934310'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2006/08/piwo-za-darmo_7849.html' title='Piwo za darmo!'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-228643628111845585</id><published>2006-07-24T16:44:00.006-07:00</published><updated>2012-01-19T08:50:57.289-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unsorted ramblings'/><category scheme='http://www.blogger.com/atom/ns#' term='gadgets'/><title type='text'>Gdy programistom się nudzi...</title><content type='html'>&lt;img src="http://konie.wlkp.pl/skolima/jogger/syslog1.jpg" alt="Widok ogólny" height="288" width="352"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;img src="http://konie.wlkp.pl/skolima/jogger/syslog2.jpg" alt="syslog-ng na BA66" height="288" width="352"/&gt;&lt;br/&gt;&lt;p&gt;Efekt niezagospodarowanych 30 minut w pracy. Log systemowy, oprócz normalnego wyświetlania wiadomości na dwunastej konsoli i zapisywania do pliku, pokazuje je także na stojącym obok monitora głównego wyświetlaczu od kasy sklepowej.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-228643628111845585?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/228643628111845585/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2006/07/gdy-programistom-sie-nudzi_7193.html#comment-form' title='Komentarze (10)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/228643628111845585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/228643628111845585'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2006/07/gdy-programistom-sie-nudzi_7193.html' title='Gdy programistom się nudzi...'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-1872215932843114392</id><published>2006-06-17T12:41:00.006-07:00</published><updated>2012-01-19T08:50:57.272-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unsorted ramblings'/><title type='text'>Permanent redirect</title><content type='html'>&lt;p&gt;Na pewno zdarzyło Ci się kiedyś trafić na stronę z informacją w rodzaju "serwis dostępny teraz pod nowym adresem". Nierzadko data w stopce wskazuje, że przeprowadzka odbyła się już parę lat temu - a użytkownicy (znaczy - Ty) nadal trafiają pod stary adres. Traci też właściciel strony - nie dość, że musi nadal utrzymywać starą domenę strony (aby przekazać użytkownikom informację), to jeszcze wyszukiwarki wyżej oceniają starszy adres, pod niego kierując użytkowników. Nie byłoby wygodniej, gdyby użytkownicy automatycznie trafiali na nową stronę, a wyszukiwarki nie pokazywały już odnośników do starej?&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Z pomocą przychodzi kod HTTP Permanent Redirect (301). Najprostsze rozwiązanie, jeśli cały serwis zmienił adres, to wpis w pliku .htaccess:&lt;/p&gt;&lt;br/&gt;&lt;pre&gt;Options +FollowSymlinks&lt;br/&gt;RewriteBase /&lt;br/&gt;RewriteEngine On&lt;br/&gt;RewriteRule ^.* http://nowy.adres.com%1 [R=permanent,L]&lt;/pre&gt;&lt;br/&gt;&lt;p&gt;Powyższa regułka włącza &lt;code&gt;mod_rewrite&lt;/code&gt; (&lt;code&gt;RewriteEngine On&lt;/code&gt;), łapie wszystkie odwołania do strony (&lt;code&gt;^.*&lt;/code&gt; - wyrażenie regularne), a następnie przekierowuje je (&lt;code&gt;[R=permanent]&lt;/code&gt;)na nową domenę, zachowując treść dopasowaną do wyrażenia regularnego  (&lt;code&gt;%1&lt;/code&gt;). Opcja  &lt;code&gt;L&lt;/code&gt; oznacza, że serwer ma na tej regule poprzestać zakończyć przetwarzanie pliku .htaccess. &lt;code&gt;mod_rewrite&lt;/code&gt; pozwala na złożone przekształcenia adresu, co można wykorzystać, gdy zmieniła się struktura strony. Niestety, nie na wszystkich serwerach jest dostępny. W samym pliku .htaccess przekierowanie można też uzyskać poprzez&lt;/p&gt;&lt;br/&gt;&lt;pre&gt;Redirect permanent /tutaj/byl/jakis.plik http://nowy.adres.com/jest.tutaj&lt;/pre&gt;&lt;br/&gt;&lt;p&gt;natomiast w pliku php działanie przekierowania 301 można generować następującym kodem:&lt;/p&gt;&lt;br/&gt;&lt;pre&gt;&amp;lt;?php&lt;br/&gt;$var_array = explode("/",$_SERVER['REQUEST_URI']);&lt;br/&gt;//print_r($var_array);&lt;br/&gt;$target=$var_array[1];&lt;br/&gt;$url="http://nowy.adres.com/".$target;&lt;br/&gt;header("HTTP/1.1 301 Moved Permanently");&lt;br/&gt;header ( "Location: $url" );&lt;br/&gt;?&gt;&lt;br/&gt;&amp;lt;p&gt;Strona została przeniesiona. Nowy adres:&amp;lt;/p&gt;&lt;br/&gt;&amp;lt;a href="&amp;lt;?php echo $url; ?&gt;"&gt;&amp;lt;?php echo $url; ?&gt;&amp;lt;/a&gt;&lt;/pre&gt;&lt;br/&gt;&lt;p&gt;przy czym samo parsowanie &lt;code&gt;$target&lt;/code&gt; trzeba dopasować do swoich potrzeb. Trzeba też pamiętać, że aby &lt;code&gt;header&lt;/code&gt; zostało przyjęte przez przeglądarkę, serwer nie może wcześniej wysłać żadnej treści - jeśli np. przed początkiem skryptu w pliku będzie pusta linia, albo chociaż spacja, to przekierowanie nie zadziała.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Przepisywanie adresów za pomocą skryptu php sprawdza się najlepiej, gdy zmieniła się struktura strony - najłatwiej za ich pomocą poprawić adresy wymagające uaktualnienia. A w jaki sposób przekonać Apacha do obsługiwania żądań przy użyciu skryptu? Jeśli interesuje nas przepisywanie adresów z jakiegoś podfolderu, to wystarczy wykorzystać fakt, że Apache, gdy nie znajdzie żądanego adresu, zaczyna przesuwać się w górę wirtualnego drzewa plików, aż trafi na plik potrafiący obsłużyć żądanie. Np. dla &lt;code&gt;http://domena.info/koza/little/beast&lt;/code&gt; najpierw zostanie sprawdzone &lt;code&gt;koza/little/beast&lt;/code&gt;, potem &lt;code&gt;koza/little&lt;/code&gt;, a na końcu &lt;code&gt;koza&lt;/code&gt;. Wystarczy poinformować serwer, że &lt;code&gt;koza&lt;/code&gt; jest skryptem php poprzez dodanie w .htaccess:&lt;/p&gt;&lt;br/&gt;&lt;pre&gt;&amp;lt;Files koza&gt;&lt;br/&gt; ForceType application/x-httpd-php&lt;br/&gt;&amp;lt;/Files&lt;/pre&gt;&lt;br/&gt;&lt;p&gt;Globalną obsługę żądań przez skrypt można ustawić za pomocą &lt;code&gt;mod_rewrite&lt;/code&gt;:&lt;/p&gt;&lt;br/&gt;&lt;pre&gt;RewriteRule ^.* rewriter.php [L]&lt;/pre&gt;&lt;br/&gt;&lt;p&gt;dopasowując według potrzeb wyrażenie regularne.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Jak wyszukiwarki reagują na Permanent Redirect? Z mojego doświadczenia wynika, że po 2 tygodniach nowy adres traktowany jest jako równorzędny staremu, a po 4 tygodniach przejmuje już w całości jego Page Rank (stary adres nie pojawia się więcej w wynikach). Jeśli nie chcesz frustrować użytkowników, pamiętaj też, by uaktualnić linki przychodzące z innych stron - dopóki przekierowanie będzie działać, użytkownicy trafią na stronę, ale jeśli nie planujesz płacić za starą domenę w nieskończoność, wypadało by zupełnie usunąć z sieci odwołania do niej. Linki wchodzące można sprawdzić w logach serwera / statystykach (&lt;code&gt;referer&lt;/code&gt;) lub poprzez wyszukiwarki. Tutaj niestety google kłamie bezczelnie, podając tylko małą część znanych mu linków, na szczęście &lt;a href="http://search.yahoo.com/"&gt;Yahoo&lt;/a&gt; (linkdomain:domainname.com albo linksite:domainname.com) oraz &lt;a href="http://beta.search.msn.com/"&gt;MSN&lt;/a&gt; (link:domainname.com) zwracają pełną listę (z dokładniejszymi wynikami w Yahoo). Zostaje już tylko skontaktować się z adminem każdej z linkujących stron...&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-1872215932843114392?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/1872215932843114392/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2006/06/permanent-redirect_9247.html#comment-form' title='Komentarze (4)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/1872215932843114392'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/1872215932843114392'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2006/06/permanent-redirect_9247.html' title='Permanent redirect'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-2047873874776271327</id><published>2006-06-17T09:40:00.006-07:00</published><updated>2012-01-19T08:50:57.280-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Dlatego lubię plusa</title><content type='html'>&lt;code&gt;emerge -e world &amp;amp;&amp;amp; echo "emerge -e world finished" | mail 48663280xxx@text.plusgsm.pl || echo "emerge failed" | mail 48663280xxx@text.plusgsm.pl&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-2047873874776271327?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/2047873874776271327/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2006/06/dlatego-lubie-plusa_6285.html#comment-form' title='Komentarze (2)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/2047873874776271327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/2047873874776271327'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2006/06/dlatego-lubie-plusa_6285.html' title='Dlatego lubię plusa'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-3655823181191965708</id><published>2006-06-02T14:51:00.006-07:00</published><updated>2012-01-19T08:50:57.331-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gadgets'/><title type='text'>Palcówka</title><content type='html'>&lt;p&gt;Porządne palcowanie wcale nie jest proste. Każdy, nawet najbardziej początkujący, jakoś sobie z nim radzi, ale jednak co profesjonalista to profesjonalista. Wielokrotnie obiecywałem sobie sumienną naukę  - czasem nawet zaczynałem jakieś ćwiczenia, ale wiadomo, jak to jest - zaczyna się zgodnie z rozkładem, a potem nas ponosi i zaczyna się działać jak popadnie, byleby szybko był efekt. Faceci generalnie radzą sobie lepiej, ale to po prostu kwestia częstszych prób. Podobno nauka poprawnego palcowania jest nawet w programie liceum - niestety, mało który nauczyciel przeprowadza ten punkt programu. Większość puszcza uczniów na żywioł i tyle - dadzą sobie radę sami. A takie palcowanie z przypadku, szczególnie, gdy skupia się uwagę na wskazówkach wizualnych, jest nie do porównania z profesjonalnym - jest dużo wolniejsze, a przy tym dużo bardziej męczące.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Biorąc to wszystko pod uwagę, wziąłem się w końcu do roboty i sporządziłem sobie widoczny poniżej przyrząd do nauki palcowania. Wystarczyło trochę farbek modelarskich do zaznaczenia prawidłowego ułożenia palców. Malowanie dało jeszcze dodatkowy bonus - zakryte zostały różnorakie elementy rozpraszające normalnie uwagę.&lt;/p&gt;&lt;br/&gt;&lt;a href="http://konie.wlkp.pl/skolima/jogger/das_keyboard_1.jpg" title="Das Keyboard dla poznaniaków" rel="lightbox"&gt;&lt;img src="http://konie.wlkp.pl/skolima/jogger/parental_advisory.jpg" width="220" height="142" alt="Przyrząd do ćwiczenia palcowania" title="Przyrząd do ćwiczenia palcowania"/&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-3655823181191965708?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/3655823181191965708/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2006/06/palcowka_8049.html#comment-form' title='Komentarze (9)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/3655823181191965708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/3655823181191965708'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2006/06/palcowka_8049.html' title='Palcówka'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-1801988172706551401</id><published>2006-05-20T07:12:00.006-07:00</published><updated>2012-01-19T08:50:57.267-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>Chwila refleksji</title><content type='html'>&lt;p&gt;Nie, nie zmieniłem pomysłu na prowadzenie bloga, znów będzie o C#. Przestrzenie nazw &lt;code&gt;System.Reflection&lt;/code&gt; i &lt;code&gt;System.Reflection.Emit&lt;/code&gt; udostępniają zestaw bardzo interesujących klas, służących do dynamicznego analizowania i generowania kodu. Pozwala to np. stworzyć uniwersalne narzędzia, służące do serializowania dowolnych, nieznanych wcześniej typów, czy też pisanie własnych kompilatorów i analizatorów kodu.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Mechanizm refleksji, chociaż potężny, jest niestety dość powolny, w związku z tym wskazane jest uzupełnianie go dynamicznym generowaniem kodu. W ten sposób wystarczy raz tylko wykonać kosztowną analizę obiektu, a potem można korzystać z zebranych wcześniej informacji, wywołując wygenerowane za pierwszym razem metody i klasy. Oczywiście, wyprodukowany w ten sposób kod można zapisać na dysku w formie zwyczajnych assembly, do późniejszego wykonania.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Korzystanie z przestrzeni nazw &lt;code&gt;System.Reflection.Emit&lt;/code&gt; wymaga niestety zapoznania się, chociaż pobieżnego, z &lt;a href="http://en.wikipedia.org/wiki/Common_Intermediate_Language"&gt;&lt;abbr title="Common Intermediate Language"&gt;CIL&lt;/abbr&gt;&lt;/a&gt;. Na szczęście &lt;abbr title="Software Developer's Kit"&gt;SDK&lt;/abbr&gt; od Microsoftu zawiera dwa bardzo przydatne narzędzia. &lt;strong&gt;peverify.exe&lt;/strong&gt; analizuje pliki assembly, zgłaszając wszelkie nieprawidłowości w ich strukturze, jak np. niewłaściwe nazwy obiektów, niezgodności typów, brak inicjalizacji instancji obiektów itp. Jest to istotne, ponieważ &lt;a href="http://en.wikipedia.org/wiki/Common_Language_Runtime"&gt;&lt;abbr title="Common Language Runtime"&gt;CLR&lt;/abbr&gt;&lt;/a&gt; bywa nadmiernie wyrozumiały dla licznych błędów, które można popełnić generując kod z pominięciem kompilatora. &lt;strong&gt;ildasm.exe&lt;/strong&gt; oraz jego odpowiednik w mono, czyli &lt;strong&gt;monodis&lt;/strong&gt;, pozwalają podejrzeć kod znajdujący się w plikach assembly, co z kolei umożliwia generowanie własnego kodu &lt;em&gt;per analogiam&lt;/em&gt;. Wystarczy napisać kod w C#, skompilować, i sprawdzić, jak efekt wygląda w CIL.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Warto też pamiętać o rozszerzeniach mechanizmu refleksji, które powstała w trakcie rozwoju mono. Są to &lt;a href="http://www.mono-project.com/Cecil"&gt;Cecil&lt;/a&gt;, pozwalający na inspekcję kodu bez ładowania go do środowiska CLR oraz &lt;a href="http://primates.ximian.com/~lluis/blog/archives/archive_2004-m11.php"&gt;CodeGeneration&lt;/a&gt;, który generuje CIL używając składni opartej na C#.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Na koniec parę ciekawostek odnośnie CLR. Na początek: interfejsy nie istnieją. CIL modeluje je za pomocą klas abstrakcyjnych. To pociąga za sobą (sic!) wielokrotne dziedziczenie. Dalej - nie istnieją też klasy. Są reprezentowane jako powiązane ze sobą struktury danych i funkcje. Każda metoda oczywiście potrzebuje wskaźnika &lt;em&gt;this&lt;/em&gt;, który jest przekazywany do niej jako parametr numer 0 (kojarzy się z C++ ?). Pozwala to na takie operacje, jak wywołanie na obiekcie metod, których on nie posiada (poprzez wrzucenie go na stos parametrów metody innego obiektu - na szczęście, jeśli odpowiednie rzutowanie nie byłoby możliwe, wykonanie zakończy się wyjątkiem) lub uruchamianie metod instancji obiektu bez uprzedniego stworzenia go (wywołanie metody, kiedy stos nie zawiera odpowiedniego wskaźnika do obiektu - CLR zachowuje się wtedy, jakby obiekt istniał, ale wszelkie pola ustawione są na wartości domyślne dla swojego typu). Użyteczna dla wielu zastosowań może być możliwość dostępu do metod i pól prywatnych.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-1801988172706551401?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/1801988172706551401/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2006/05/chwila-refleksji_4715.html#comment-form' title='Komentarze (1)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/1801988172706551401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/1801988172706551401'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2006/05/chwila-refleksji_4715.html' title='Chwila refleksji'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-1439324488114574999</id><published>2006-05-11T17:03:00.006-07:00</published><updated>2012-01-19T08:50:57.264-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>Zwalnianie zasobów (C#)</title><content type='html'>&lt;p&gt;Jeśli dopiero co zaczynasz korzystać z platformy .Net, a wcześniej nie pisałeś w językach z automatycznym zarządzaniem pamięcią, to na pewno wcześniej czy później popełnisz ten sam błąd co ja. Wyobraź sobie, że pisana przez Ciebie klasa wykorzystuje jakieś zasoby systemowe niezarządzane przez Garbage Collector,. Jak je zwolnić? Naturalne wydaje się zrobienie tego w destruktorze, prawda? Przecież w C# ma on nawet tą samą znaną składnię, &lt;code&gt;~DummyClass()&lt;/code&gt;, co z tego, że nazywa się finalizer?&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Haczyki są trzy. Pierwszy polega na tym, że finalizer zostanie wywołany w momencie sprzątania obiektu przez Garbage Collector, a to może stać się długo po usunięciu ostatniego do niego odwołania. Drugi - finalizer nie zostanie wywołany w ogóle, jeśli cała aplikacja jest właśnie wyłączana. Trzeci - obiekty posiadające finalizer śledzone odrębnie od nie posiadających go i usuwane z pamięci później. Całe to zachowanie wynika z faktu, że w środowisku z zarządzaną pamięcią klasyczna implementacja destruktora jest bardzo niewydajna, jeśli nie w ogóle niemożliwa.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Jak więc zwolnić takie zasoby? Należy zaimplementować interfejs &lt;code&gt;IDisposable&lt;/code&gt; i pamiętać, by go używać, korzystając z implementujących go klas. Służy do tego specjalne słowo kluczowe &lt;code&gt;using&lt;/code&gt;, gwarantujące, że na "opakowanym" w nie obiekcie zostanie wywołane &lt;code&gt;Dispose()&lt;/code&gt;, niezależnie od tego,czy kod w klauzuli zakończy się normalnie czy też wyjątkiem. Używa się tego konstruktu tak:&lt;/p&gt;&lt;br/&gt;&lt;pre&gt;using(DummyObject something = new DummyObject())&lt;br/&gt;{&lt;br/&gt;	//jakiś kod, korzystający z obiektu something&lt;br/&gt;}&lt;/pre&gt;&lt;br/&gt;&lt;p&gt; Gdy korzystamy z obiektów implementujących &lt;code&gt;IDisposable&lt;/code&gt;, a niemożliwe jest ujęcie ich w ramy &lt;code&gt;using&lt;/code&gt;, należy je zwalniać w metodzie &lt;code&gt;Dispose()&lt;/code&gt; korzystającego z nich obiektu.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;I jeszcze przykładowe zastosowanie &lt;code&gt;IDisposable&lt;/code&gt;, bo w nim też łatwo narobić błędów:&lt;/p&gt;&lt;br/&gt;&lt;pre&gt;/// &amp;lt;summary&gt;&amp;lt;/summary&gt;&lt;br/&gt;public class DisposableObject : IDisposable&lt;br/&gt;{&lt;br/&gt;	#region implementacja IDisposable&lt;br/&gt;	/// &amp;lt;summary&gt;&lt;br/&gt;	/// Finalizer, wywołuje Dispose,&lt;br/&gt;	/// &amp;lt;strong&gt;nie nalezy na nim polegać!&amp;lt;/strong&gt;.&lt;br/&gt;	/// &amp;lt;/summary&gt;&lt;br/&gt;	~DisposableObject()&lt;br/&gt;	{&lt;br/&gt;		Dispose(false);&lt;br/&gt;	}&lt;br/&gt;&lt;br/&gt;	/// &amp;lt;summary&gt;&lt;br/&gt;	/// Zwalnia używane zasoby. Wyrejestrowuje finalizer,&lt;br/&gt;	/// by niepotrzebnie nie opóźniać zwalniania pamięci.&lt;br/&gt;	/// &amp;lt;/summary&gt;&lt;br/&gt;	public void Dispose()&lt;br/&gt;	{&lt;br/&gt;		Dispose(true);&lt;br/&gt;		GC.SuppressFinalize(this);&lt;br/&gt;	}&lt;br/&gt;&lt;br/&gt;	/// &amp;lt;summary&gt;&lt;br/&gt;	/// Zwalnia używane zasoby.&lt;br/&gt;	/// &amp;lt;/summary&gt;&lt;br/&gt;	/// &amp;lt;param name="disposing"&gt;czy mamy czas na dokładne sprzątanie?&amp;lt;/param&gt;&lt;br/&gt;	protected virtual void Dispose(bool disposing)&lt;br/&gt;	{&lt;br/&gt;		if (!disposed)&lt;br/&gt;		{&lt;br/&gt;			if (disposing)&lt;br/&gt;			{&lt;br/&gt;				//tutaj trafia to, co _powinniśmy_ posprzątać&lt;br/&gt;			}&lt;br/&gt;			//a tutaj to, co _musimy_ posprzątać&lt;br/&gt;		}&lt;br/&gt;		disposed = true;&lt;br/&gt;	}&lt;br/&gt;&lt;br/&gt;	/// &amp;lt;summary&gt;Aby tylko raz zwalniac zasoby.&lt;br/&gt;	/// (Dispose może zostać wywołane wielokrotnie.)&amp;lt;/summary&gt;&lt;br/&gt;	protected bool disposed = false;&lt;br/&gt;	#endregion&lt;br/&gt;}&lt;/pre&gt;&lt;br/&gt;&lt;p&gt;Jeśli nasza klasa dziedziczy z innej, już implementującej &lt;code&gt;IDisposable&lt;/code&gt;, to wystarczy ograniczyć się do pokrycia metody &lt;code&gt;protected virtual void Dispose(bool disposing)&lt;/code&gt;, pamiętając, by wywołać w niej &lt;code&gt;base:Dispose(disposing)&lt;/code&gt;.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Na koniec ważna uwaga odnośnie kooperacji C++ i .Net. W zarządzanym C++ za pomocą składni &lt;code&gt;~DummyObject()&lt;/code&gt; definiuje się metodę &lt;code&gt;Dispose()&lt;/code&gt;! Analogicznie, &lt;code&gt;delete someObject&lt;/code&gt; oznacza wywołanie na nim metody &lt;code&gt;Dispose()&lt;/code&gt;. Finalizer można zaimplementować poprzez &lt;code&gt;!DummyObject()&lt;/code&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-1439324488114574999?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/1439324488114574999/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2006/05/zwalnianie-zasobow-c_9811.html#comment-form' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/1439324488114574999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/1439324488114574999'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2006/05/zwalnianie-zasobow-c_9811.html' title='Zwalnianie zasobów (C#)'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-279649277798197323</id><published>2006-05-11T15:59:00.006-07:00</published><updated>2012-01-19T08:50:57.303-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>Globalna obsługa wyjątków w .Net</title><content type='html'>&lt;p&gt;Mały,ale użyteczny kawałek kodu:&lt;/p&gt;&lt;br/&gt;&lt;pre&gt;AppDomain.CurrentDomain.UnhandledException +=&lt;br/&gt;	delegate(object o, UnhandledExceptionEventArgs args)&lt;br/&gt;		{Console.WriteLine(args.ExceptionObject.ToString());};&lt;/pre&gt;&lt;br/&gt;&lt;p&gt;Do czego to służy? Otóż zdarzenie &lt;code&gt;UnhandledException&lt;/code&gt; wywoływane jest przy każdym nieobsłużonym przez aplikację wyjątku. Można to wykorzystać by zapisać błąd w dzienniku systemowym czy automatycznie zgłosić go obsłudze klienta / developerom. &lt;strong&gt;Nie można&lt;/strong&gt; w ten sposób usunąć wyjątku - zdarzenie jest wywoływane już po 'wysypaniu' się wątku, w którym wystąpił wyjątek.  Jeśli wolisz gotowe rozwiązania, polecam &lt;a href="http://www.codeproject.com/dotnet/ExceptionHandling.asp"&gt;Unhandled Exception Manager&lt;/a&gt; z  codeproject.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-279649277798197323?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/279649277798197323/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2006/05/globalna-obsuga-wyjatkow-w-net_3266.html#comment-form' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/279649277798197323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/279649277798197323'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2006/05/globalna-obsuga-wyjatkow-w-net_3266.html' title='Globalna obsługa wyjątków w .Net'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-8895674528394891697</id><published>2006-05-07T13:55:00.006-07:00</published><updated>2012-01-19T08:50:57.475-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unsorted ramblings'/><title type='text'>Smacznego, reloaded.</title><content type='html'>&lt;img src="http://konie.wlkp.pl/skolima/jogger/Polecamy.jpg" alt="Polecamy: krew, na sztuki" title="Smacznego, reloaded. Tylko czemu na sztuki?" height="288" width="352"/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-8895674528394891697?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/8895674528394891697/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2006/05/smacznego-reloaded_9545.html#comment-form' title='Komentarze (2)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/8895674528394891697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/8895674528394891697'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2006/05/smacznego-reloaded_9545.html' title='Smacznego, reloaded.'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-1840222839050289696</id><published>2006-04-20T18:32:00.006-07:00</published><updated>2012-01-19T08:50:57.270-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unsorted ramblings'/><title type='text'>Smacznego!</title><content type='html'>&lt;a href="http://konie.wlkp.pl/skolima/jogger/Marcysia.jpg" title="Smacznego!" rel="lightbox"&gt;&lt;img src="http://konie.wlkp.pl/skolima/jogger/thumbs/Marcysia.jpg" width="150" height="200" alt="Tłuszczowa substancja do smarowania" /&gt;&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;kryptoreklama - na &lt;a href="http://skolima.deviantart.com/"&gt;deviancie&lt;/a&gt; nowe zdjęcia, może się komuś spodobają&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-1840222839050289696?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/1840222839050289696/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2006/04/smacznego_4628.html#comment-form' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/1840222839050289696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/1840222839050289696'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2006/04/smacznego_4628.html' title='Smacznego!'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-1232249527550946820</id><published>2006-04-15T16:29:00.006-07:00</published><updated>2012-01-19T08:50:57.259-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gadgets'/><title type='text'>Ciszej...jeszcze ciszej...nadal nie jest cicho!</title><content type='html'>&lt;p&gt;Jakiś czas temu komp trafił z leża w piwnicy do mojego pokoju. I w końcu zauważyłem, jak ta bestia wyje. Już nie było mowy o zostawieniu &lt;a href="http://www.emule-project.net"&gt;muła&lt;/a&gt; na noc, bo spać się po prostu nie dało. Jakoś tak jest, że jak raz się zwróci uwagę na jedną upierdliwość, to potem nie daje ona spokoju, nawet, jeśli wcześniej była niezauważalna... Diagnoza: komputer jest za głośny.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Pierwszy winny został namierzony od razu, bo charczał jak śmiertelnie ranny zwierz. Zatrzymanie go ołówkiem dało cudowny efekt, ale było nieco ryzykowne na dłuższą metę. Wentylator z tyłu obudowy wyleciał, zastąpiony przez dwa nowe, jeden na jego miejsce, drugi z przodu kasty, na dole, żeby zasysał powietrze. Nowe wentylatorki kręcą się wolniej i ciszej, a do tego dopasowują prędkość do temperatury. No i były tanie jak barszcz ;-) (Arctic Cooling Fan PRO TC)&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Temperatura spadła o 2ºC (wg &lt;a href="http://www.lm-sensors.org/" &gt;lm_sensors&lt;/a&gt;), i jest ciszej. Dużo ciszej, ale nadal coś hałasuje... Tym razem - karta graficzna, z malutkim wiatrakiem kręcącym się w szaleńczym tempie. Skoro jest chłodniej, to można zakryć zbędne dziury w obudowie, powinno być ciszej... trochę płyty korkowej i zrobione. Efekt jest... pewien. Można też wywalić niepotrzebną stację dyskietek, zgrzytającą strasznie za każdym razem, gdy Windows sobie o niej przypomni. Hmm, co by tu... Pasywne chłodzenie za drogie, ale można kupić wentylator AC, prawie bezgłośny...&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Nowa "zabawka" przyszła dziś z Allegro (sklepy komputerowe nie interesują się już posiadaczami tak archaicznego sprzętu jak mój, sniff sniff). Śrubokręt w rękę i do roboty. Arctic Cooling NV Silencer 1 już działa w moim komputerze, znów jest ciszej... teraz słychać dysk twardy, wentylator na procesorze i.... monitor. Ale głośność spadła o parę klas - sprzętu nie słychać w ogóle przy włączonej muzyce, zagłusza go cicha rozmowa. To wystarczy - do czasu ;-)&lt;/p&gt;&lt;br/&gt;&lt;a href="http://konie.wlkp.pl/skolima/jogger/01_zamiast_dyskietki.jpg" rel="lightbox" title="Zamiast dyskietki..."&gt;&lt;img height="112" width="150" src="http://konie.wlkp.pl/skolima/jogger/thumbs/01_zamiast_dyskietki.jpg" alt="Usunięta stacja FDD" title="Zamiast dyskietki..." /&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://konie.wlkp.pl/skolima/jogger/02_tyle_trzeba_miejsca.jpg" rel="lightbox" title="Miejsce na nowe chłodzenie - odpadł jeden slot PCI"&gt;&lt;img height="112" width="150" src="http://konie.wlkp.pl/skolima/jogger/thumbs/02_tyle_trzeba_miejsca.jpg" alt="Dziura pod NV Silencer 1" title="Miejsce na nowe chłodzenie - odpadł jeden slot PCI" /&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://konie.wlkp.pl/skolima/jogger/03_nowy_i_stary_1.jpg" rel="lightbox" title="Nowy i stary wentylator obok siebie"&gt;&lt;img height="112" width="150" src="http://konie.wlkp.pl/skolima/jogger/thumbs/03_nowy_i_stary_1.jpg" alt="Porównanie wielkości" title="Nowy i stary wentylator obok siebie" /&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://konie.wlkp.pl/skolima/jogger/04_naked_chipset.jpg" rel="lightbox" title="Nagi chipset na karcie graficznej"&gt;&lt;img height="112" width="150" src="http://konie.wlkp.pl/skolima/jogger/thumbs/04_naked_chipset.jpg" alt="Nagi chipset na karcie graficznej" title="Nagi chipset na karcie graficznej" /&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://konie.wlkp.pl/skolima/jogger/05_zabawka_top.jpg" rel="lightbox" title="Zabawka w całej okazałości"&gt;&lt;img height="112" width="150" src="http://konie.wlkp.pl/skolima/jogger/thumbs/05_zabawka_top.jpg" alt="Arctic Cooling NV Silencer 1" title="Zabawka w całej okazałości" /&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://konie.wlkp.pl/skolima/jogger/06_it_aint_small.jpg" rel="lightbox" title="Małe to to nie jest :D"&gt;&lt;img height="112" width="150" src="http://konie.wlkp.pl/skolima/jogger/thumbs/06_it_aint_small.jpg" alt="Zajęte dwa sloty PCI" title="Małe to to nie jest :D" /&gt;&lt;/a&gt;&lt;br/&gt;&lt;p&gt;A po głowie chodzi mi złożenie terminalu, całkowicie pozbawionego generujących dźwięk, ruchomych elementów, takich jak np. dysk czy aktywne chłodzenie...&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-1232249527550946820?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/1232249527550946820/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2006/04/ciszejjeszcze-ciszejnadal-nie-jest_8995.html#comment-form' title='Komentarze (8)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/1232249527550946820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/1232249527550946820'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2006/04/ciszejjeszcze-ciszejnadal-nie-jest_8995.html' title='Ciszej...jeszcze ciszej...nadal nie jest cicho!'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-8991385172943126828</id><published>2006-04-15T14:48:00.006-07:00</published><updated>2012-01-19T08:50:57.480-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gadgets'/><title type='text'>Krnąbrna elektronika</title><content type='html'>&lt;img src="http://konie.wlkp.pl/skolima/jogger/10.81.jpg" alt="Godzina 10:81" title="10:81" height="288" width="352"/&gt;&lt;br/&gt;&lt;img src="http://konie.wlkp.pl/skolima/jogger/10.82.jpg" alt="Godzina 10:82" title="10:82" height="288" width="352"/&gt;&lt;br/&gt;&lt;p&gt;Dość intrygujący widok, napotkany kilka dni temu w poznańskim tramwaju. Mój zegarek pokazywał 11:22... Dzielny tramwajowy wyświetlacz, nie składając broni z powodu byle błędu konstruktora, wciąż odliczał czas.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-8991385172943126828?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/8991385172943126828/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2006/04/krnabrna-elektronika_1440.html#comment-form' title='Komentarze (6)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/8991385172943126828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/8991385172943126828'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2006/04/krnabrna-elektronika_1440.html' title='Krnąbrna elektronika'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-3684264474284853477</id><published>2006-04-08T07:06:00.006-07:00</published><updated>2012-01-19T08:50:57.334-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='en'/><title type='text'>IPX and mounting Novell Netware shares on Gentoo</title><content type='html'>&lt;p&gt;Start by enabling kernel support for IPX networking and NCP filesystem. For 2.6 kernels (it's simmilar on 2.4), you need to enable the following settings:&lt;/p&gt;&lt;pre&gt;Networking --&gt;&lt;br/&gt;   Networking options --&gt;&lt;br/&gt;     &amp;lt;*&gt; The IPX protocol&lt;/pre&gt;&lt;pre&gt;File systems --&gt;&lt;br/&gt;   Network file systems --&gt;&lt;br/&gt;     &amp;lt;*&gt; NCP file system support (to mount NetWare volumes)&lt;br/&gt;        [*]   Clear remove/delete inhibit when needed&lt;br/&gt;        [*]   Use NFS namespace if available&lt;br/&gt;        [*]   Use LONG (OS/2) namespace if available&lt;/pre&gt;&lt;p&gt;On 2.6 kernels enabling NCP shows quite a long list of options. As I did not understand their meaning ;-) , I settled for defaults, which work just fine. You may want to enable National Language Support. I gave up on this as I was unable to find a working combination of codepage/iocharset for my local Novell server.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;So, recompile (&lt;code&gt;make install &amp;amp;&amp;amp; make modules modules_install&lt;/code&gt; for gentoo-sources) and reboot. Emerge ncpfs (&lt;code&gt;emerge -av ncpfs&lt;/code&gt;). I wanted my machine to automount the Netware share on every boot, thus I added an entry to &lt;code&gt;/etc/fstab&lt;/code&gt;:&lt;/p&gt;&lt;pre&gt;SERVER/user		/mnt/novell	ncpfs		uid=root,gid=disk,owner=root,passwd=pass,mode=660,volume=VOL1	0 0&lt;/pre&gt;&lt;p&gt;Obviously, you have to replace SERVER with your local Novell servername, user with your username, VOL1 with the name of volume you wish to mount (or ommit &lt;code&gt;volume=VOL1&lt;/code&gt; at all to mount the entire server) and pass (in &lt;code&gt;passwd=pass&lt;/code&gt;) with your guess_what. Of course, &lt;code&gt;/mnt/novell&lt;/code&gt; has to exist.&lt;/p&gt;&lt;p&gt;There are a few caveats to keep in mind if you choose this approach. First and foremost, your password is visible to anyone who can read your &lt;code&gt;fstab&lt;/code&gt;. This can be avoided by storing it in a config file, readable only to root (see &lt;code&gt;man ncpfs&lt;/code&gt; for details). Second, the mount is fully accessible to anyone in the group disk (to allow only root, drop &lt;code&gt;gid=disk&lt;/code&gt; from fstab entry).&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Next, you'll want to actually connect to IPX network. I assume that it is working on the very same ethernet connection you use as eth0. Execute &lt;code&gt;ipx_configure --auto_interface=on --auto_primary=on&lt;/code&gt; and wait a few seconds for it to settle (it backgrounds immediately, but give it some time to actually connect). Then, examine &lt;code&gt;ifconfig&lt;/code&gt; output for lines containing IPX. Their number may vary, depending on number of IPX versions enabled on the server. If all went well, you are now able to mount your Novell share with a simple &lt;code&gt;mount /mnt/novell&lt;/code&gt;.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Now, the init scripts. To connect to IPX on boot, add this code into &lt;code&gt;/etc/conf.d/net.eth0&lt;/code&gt;:&lt;/p&gt;&lt;pre&gt;postup() {&lt;br/&gt;	# This function could be used, for example, to register with a&lt;br/&gt;	# dynamic DNS service.  Another possibility would be to&lt;br/&gt;	# send/receive mail once the interface is brought up.&lt;br/&gt;	result=`ipx_configure --auto_interface=on --auto_primary=on`&lt;br/&gt;&lt;br/&gt;	COUNTER=0&lt;br/&gt;	while [ $COUNTER -lt 30 -a `ifconfig|grep IPX|wc -l` -lt 2 ]&lt;br/&gt;	do&lt;br/&gt;		let COUNTER+=1&lt;br/&gt;		sleep 1&lt;br/&gt;	done&lt;br/&gt;	&lt;br/&gt;	if [ $COUNTER -eq 30  ]&lt;br/&gt;	then&lt;br/&gt;		return 127&lt;br/&gt;	else&lt;br/&gt;		return $result&lt;br/&gt;	fi&lt;br/&gt;}&lt;/pre&gt;&lt;p&gt;The '2' in '-lt 2' is the number of lines, containing IPX, present in &lt;code&gt;ifconfig&lt;/code&gt; output after the connection has settled. Change it as fit. '30' in '-lt 30' and '-eq 30' is the allowed timeout for connecting, ie. if IPX is not up after 30 seconds script reports failure.&lt;/p&gt;&lt;p&gt;To properly mount your NCP shares (&lt;b&gt;after&lt;/b&gt; the network connection is initialized), gentoo has to recognize them as network filesystems. Thus, add &lt;code&gt;NET_FS_LIST="ncpfs"&lt;/code&gt; to both &lt;code&gt;/etc/conf.d/localmount&lt;/code&gt; and &lt;code&gt;/etc/conf.d/netmount&lt;/code&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-3684264474284853477?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/3684264474284853477/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2006/04/ipx-and-mounting-novell-netware-shares_192.html#comment-form' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/3684264474284853477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/3684264474284853477'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2006/04/ipx-and-mounting-novell-netware-shares_192.html' title='IPX and mounting Novell Netware shares on Gentoo'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-3581253561350740348</id><published>2006-04-03T13:43:00.006-07:00</published><updated>2012-01-19T08:50:57.326-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>Dostęp do formatki z zewnętrznego wątku</title><content type='html'>&lt;p&gt;W dokumentacji .Net napisane jest jednoznacznie - jedynym wątkiem, który może wykonywać jakiekolwiek operacje na formatce (&lt;code&gt;System.Windows.Forms.Form&lt;/code&gt;) jest ten, który ją utworzył. Pozostałym wolno jedynie wywoływać metody z serii &lt;code&gt;Invoke()&lt;/code&gt;, które z kolei zaowocują wykonaniem podanego do nich &lt;code&gt;delegate&lt;/code&gt; w wątku formatki. A jak tego po ludzku użyć? Ano tak:&lt;/p&gt;&lt;br/&gt;&lt;p&gt;w klasie formatki&lt;/p&gt;&lt;pre&gt;//sygnatura funkcji do wywołania z zewnątrz&lt;br/&gt;delegate void SetTextDelegate(string text);&lt;br/&gt;//i sama funkcja&lt;br/&gt;void SetText(string text)&lt;br/&gt;{&lt;br/&gt;    if(!InvokeRequired)//czyli wywołanie z wątku formatki&lt;br/&gt;        button1.Text = text;&lt;br/&gt;    else&lt;br/&gt;        Invoke(new SetTextDelegate(SetText), text);//trzeba zmienić wątek&lt;br/&gt;}&lt;/pre&gt;&lt;p&gt;natomiast użycie tego w wątku zewnętrznym to po prostu&lt;/p&gt;&lt;pre&gt;form1.SetText((i*i).ToString());&lt;/pre&gt;&lt;p&gt;Wersja 2.0 platformy umożliwia wykonanie tej samej operacji jeszcze prościej, mianowicie poprzez wywołanie&lt;/p&gt;&lt;pre&gt;form1.Invoke((MethodInvoker)delegate { form1.button1.Text = (i * i).ToString(); });&lt;/pre&gt;&lt;p&gt;Tutaj niepotrzebne są żadne dodatkowe metody w formatce, po prostu informujemy framework, że ten kawałek kodu ma być wykonany w wątku będącym właścicielem &lt;code&gt;form1&lt;/code&gt;. Jedynym haczykiem jest rzutowanie do &lt;code&gt;MethodInvoker&lt;/code&gt;. Jest ono konieczne, ponieważ metoda &lt;code&gt;Invoke()&lt;/code&gt; jako parametr przyjmuje dowolny &lt;code&gt;System.Delegate&lt;/code&gt;... który niestety sam nie jest typu &lt;code&gt;delegate&lt;/code&gt;. Bez &lt;code&gt;MethodInvoker&lt;/code&gt; metoda anonimowa byłaby rzutowana do &lt;code&gt;System.Delegate&lt;/code&gt;, co skończyłoby się błędem kompilacji. A w ten sposób kompilator rozumie o co nam chodzi.&lt;/p&gt;&lt;p&gt;Jeśli już wykorzystywałeś wątki razem z &lt;code&gt;Windows.Forms&lt;/code&gt; to pewnie zastanawiasz się, po co ta cała szopka, przecież &lt;b&gt;można&lt;/b&gt; odwoływać się do formatki z innego wątku i wszystko działa? Ano działa, ale tylko na Windows XP. W tej wersji platformy .Net wprowadzono niestety zabezpiecznia przed najczęstszymi błędami związanymi z programowaniem wielowątkowym, co prowadzi do tego, iż da się na niej uruchomić kod niepoprawny, który &lt;b&gt;nie zadziała&lt;/b&gt; np. na Windows 98 lub &lt;a href="http://www.mono-project.com/Main_Page"&gt;mono&lt;/a&gt;. Zresztą, w aktualnej (1.1.13.*) implementacji &lt;code&gt;Windows.Forms&lt;/code&gt; pod tym ostatnim jest parę innych problemów - np. tworzenie formatek (całkowicie niezależnych!) w kilku różnych wątkach prowadzi do niedeterministycznego zachowania programu i częstych padów...&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-3581253561350740348?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/3581253561350740348/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2006/04/dostep-do-formatki-z-zewnetrznego-watku_2166.html#comment-form' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/3581253561350740348'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/3581253561350740348'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2006/04/dostep-do-formatki-z-zewnetrznego-watku_2166.html' title='Dostęp do formatki z zewnętrznego wątku'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-3281818560477085474</id><published>2006-04-02T11:46:00.006-07:00</published><updated>2012-01-19T08:50:57.313-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gadgets'/><title type='text'>Nie dla idiotów?</title><content type='html'>&lt;p&gt;Komputer znajomej, kupiony okazyjnie w wiadomym sklepie, zaraz po skończeniu się okresu gwarancyjnego zaczął się zawieszać kilka-kilkanaście minut po starcie. Po stwierdzeniu, że problem nie jest związany z softem otworzyliśmy obudowę...&lt;br /&gt;&lt;img src="http://konie.wlkp.pl/skolima/jogger/Plyta_Wisni.jpg" alt="Spalone kondensatory" title="Komputer z mediamarkt" height="288" width="352" /&gt;&lt;br /&gt;Tak, tak, spalone są wszyściutkie kondensatory na płycie głównej :-] &lt;/p&gt;&lt;br/&gt;&lt;p&gt;Inny klient, ten sam sklep. Dysk, znów po gwarancji, oddany do naprawy do małego sklepu komputerowego. Serwisant zaintrygowany, bo klient oddał do naprawy dysk jako 40GB, a nadruk oznajmia, że pojemność wynosi 80GB. Chwila sprawdzania i wszystko jasne - w dysku jedna głowica z dwóch nie działała od początku, więc został sprzedany jako o połowę mniejszy.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Nie mogę zrobić nic innego jak tylko zgodzić się z hasłem z niemieckiej reklamy Mediamarkt:&lt;/p&gt;&lt;blockquote&gt;"Nie opłaca sie kraść."&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-3281818560477085474?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/3281818560477085474/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2006/04/nie-dla-idiotow_2060.html#comment-form' title='Komentarze (1)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/3281818560477085474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/3281818560477085474'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2006/04/nie-dla-idiotow_2060.html' title='Nie dla idiotów?'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-7690067538869489739</id><published>2006-03-22T14:50:00.006-08:00</published><updated>2012-01-19T08:50:57.436-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unsorted ramblings'/><title type='text'>Update - na lepsze?</title><content type='html'>&lt;p&gt;Nokia PC Suite po uaktualnieniu pozbyła się niektórych elemenów składowych. Na przykład edytora midi. Żeby było śmieszniej, znaleźć wersję 6.6 (w której jeszcze zawiera Nokia Sound Converter) wcale nie jest tak prosto, z większości stron tylko najnowsze 6.7 można ściągnąć.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Samochód (nie mój, ale czasem się uda pożyczyć) po wymianie na nowy nie pozwala mi wozić plecaka na siedzeniu. Cały czas krzyczy, że pasażer nie ma pasów zapiętych. Dobrze, że przynajmniej skrzynia biegów manualna - ruszanie ze świateł na automacie nie daje żadnej satysfakcji.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Jedyny zarejestrowany dziś przeze mnie pozytywny update to program do wypełniania PITów. Wersja 2004 jest do ściągnięcia za darmo. Wersja 2005, znaczy się aktualna, dostępna tylko z Wyborczą. Albo jako update do 2004 :P &lt;/p&gt;&lt;br/&gt;&lt;p&gt;EDIT: warto jeszcze wspomnieć o usprawnieniach w Otwartym Oprogramowaniu. Ponieważ zarówno Open Office jak i KOffice wspierają formaty Open Document, więc jeśli chce się stworzyć arkusz kalkulacyjny zrozumiały dla obu programów, należy go zapisać... jako Microsoftowy xls. W specyfikacji ods brak wytycznych do zapisu funkcji, więc każdy program zapisuje je po swojemu - a cudze odczytuje jako tekst.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-7690067538869489739?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/7690067538869489739/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2006/03/update-na-lepsze_8670.html#comment-form' title='Komentarze (1)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/7690067538869489739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/7690067538869489739'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2006/03/update-na-lepsze_8670.html' title='Update - na lepsze?'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-6494550509937412093</id><published>2006-03-18T11:06:00.006-08:00</published><updated>2012-01-19T08:50:57.405-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>The gentoo way</title><content type='html'>&lt;p&gt;Wczoraj w końcu mogłem zrobić to, na co miałem od tak dawna ochotę - zmienić OS na moim stanowisku w pracy. Slackware'a miałem zdecydowanie dość, a do tego po moich ostatnich próbach "usprawnienia" system zachowywał się... różnie.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Tym razem sam instalowałem system (poprzednio stanowisko przygotowywał starszy programista), więc mogłem wybrać pasujące mi oprogramowanie. Gentoo wypuściło właśnie nowe płyty, z automatycznym instalatorem, żal nie spróbować ;-)&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Gentoo LiveCD 2006.0 bez problemu uruchomiło się w trybie graficznym, z Gnome. Żadnych problemów z przeglądaniem stron spod Firefox'a, jest nawet OpenOfice, jak ktoś bardzo potrzebuje z niego korzystać mając w tle trwającą instalację. Sam graficzny instalator... pomysł dobry, wiele osób boi się Gentoo słysząc o instalacji za pomocą bash'a. Z wykonaniem nieco gorzej - musiałem sobie go odpuścić, bo nie daje sobie rady, gdy coś odbiega od standardu.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;A maszyna w firmie nieco odbiega. Tak właściwie, to miał to chyba być serwer Oracle'a, ale potrzeby był desktop dla pracownika i jakoś tak wyszło.... :-D Pentium Prescott HT jest procesorem zupełnie normalnym (chociaż długo trwało, zanim Slack dał się przekonać do tego HT - ale pod nim nawet całej pamięci - 1GB - nie dało się wykorzystać, bo były problemy z włączeniem HIGHMEM). Nieco mniej normalny jest brak karty dźwiękowej i dwie karty graficzne, z tego jedna na PCI (on-board jest Radeon 7200, na PCI - nie PCI Express - Radeon 9200 - bo ten pierwszy, to się podobno do pracy nie nadaje :P ). Kontroler SCSI Adaptec AIC-7902 z dwoma napędami jest najciekawszym elementem konfiguracji. Pod Slackiem wykorzystywany był z niego jeden dysk.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Zaczęło się od uruchomienia macierzy dyskowej: RAID1 na /boot, RAID0 na / i dwie niezależne partycje na swap. Na &lt;a href="http://gentoo-wiki.com"&gt;Gentoo Wiki&lt;/a&gt; proces jest przystępnie opisany. Całość ruszyła, dała się zamontować, wystartował automatyczny instalator (jeszcze byłem dobrej myśli), pokrzyczał, że nie może sam zamontować dysków, zaczął działać... Najpierw okazało się, że instalacja jest błyskawiczna (podobno 7.5 minuty) tylko dla domyślnych ustawień. Jeśli ktoś chce np. KDE zamiast Gnome, będzie musiał poczekać dłużej... Chwilę później instalator pogubił się całkowicie i odmówił dalszej pracy.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;No nic, trzeba było zatem wrócić do ręcznej działalności. Spod X'ów szło to o tyle wygodniej, że można mieć na jednym ekranie dwie konsole i jeszcze dokumentacja się zmieści, i google jak czegoś potrzeba.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Nareszcie widać możliwości tego sprzętu. Prędkość odczytu z dysku, zmierzona za pomocą hdparm, to 66MBps. Z macierzy - 125MBps. Jak na stację roboczą - monstrum :-D . Zostało mi jeszcze skonfigurowanie X'ów. Ech, gdyby tak dostać drugi monitor...&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-6494550509937412093?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/6494550509937412093/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2006/03/gentoo-way_3803.html#comment-form' title='Komentarze (1)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/6494550509937412093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/6494550509937412093'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2006/03/gentoo-way_3803.html' title='The gentoo way'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-4293679050099357864</id><published>2006-03-14T14:16:00.006-08:00</published><updated>2012-01-19T08:50:57.356-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gadgets'/><title type='text'>iRiver T10 - epilog</title><content type='html'>&lt;p&gt;Nieco ponad miesiąc temu narzekałem na &lt;a href="http://skolima.jogger.pl/2006/01/28/microsoft-plays-for-sure/"&gt;odtwarzacz iRiver T10&lt;/a&gt;. Nie dało się go używać jako normalnej pamięci masowej USB, wymagał do komunikacji z komputerem Windows Media Player'a 10. Wspominałem też, że taka sytuacja przeszkadza wielu osób. Część z nich była na tyle zdesperowana, by zaryzykować rozwalenie zabawki za kilkaset złotych. No i są efekty.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Powstała strona (już nie istnieje) opisująca dokładnie proces konwersji T10 do trybu pracy urządzenia pamięci masowej (czyli - wpinasz w port i możesz przegrywać pliki, na każdym systemie operacyjnym obsługującym USB). Cała operacja wymaga nieco kombinowania, zalecam też trzymać się dokładnie instrukcji. Na stronie widać np. informację o dwóch nieudanych konwersjach, a w ich szczegółach można doczytać, że wynikały one właśnie z niezastosowania się do przepisu (firmware hybrydowy w wersji Non-Pure wgrany do odtwarzacza Pure, czyli bez radia).&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Po zakończonej konwersji odtwarzacz identyfikuje się jako australijski, z radiem ;-) , które niestety nie działa (brak dźwięku - nic zresztą dziwnego, skoro w środku nie ma chipa za nie odpowiedzialnego). Nie powoduje natomiast żadnych problemów - to ważne, bo w T20 próba użycia radia na odtwarzaczu Pure (czyli bez odpowiedniego chipa) skończyła się zniszceniem playera. Cała reszta opcji działa stabilnie. Dodatkowym plusem jest usunięcie ograniczenia głośności - teraz już nikt nie zabroni mi niszczyć sobie słuchu :-P. Warto też zaznaczyć, że update'y firmware'u iRiver wypuszcza szybciej dla wersji UMS.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Moje osobiste wrażenie, nie poparte dokładnymi testami - transfer danych w trybie UMS odbywa się szybciej niż wcześniej przez MTP. Odtwarzacz wreszcie nie zrywa połączenia z komputerem.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;UPDATE: porówanie prędkości iAudio 5 i iRiver T10 UMS. iRiver jest pojemniejszy o 30MB, ale prawie dwukrotnie wolniejszy! [niestety, darmowy hosting zżarł screenshota]&lt;/p&gt;&lt;!--&lt;img src="http://skolima.sk.funpic.de/junk/iriver_T10_vs_iAudio_5.png"  alt="iRiver T10 vs iAudio 5"/&gt;--&gt;&lt;br/&gt;&lt;p&gt;UPDATE 2: &lt;a href="http://www.iriver.com/mtp/"&gt;iRiver udostępnia oficjalnie narzędzia do konwersji MTP&amp;lt;-&amp;gt;UMS&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-4293679050099357864?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/4293679050099357864/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2006/03/iriver-t10-epilog_1288.html#comment-form' title='Komentarze (4)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/4293679050099357864'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/4293679050099357864'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2006/03/iriver-t10-epilog_1288.html' title='iRiver T10 - epilog'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-3913611818534501496</id><published>2006-02-03T10:46:00.006-08:00</published><updated>2012-01-19T08:50:57.344-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>Singleton w C#</title><content type='html'>&lt;p&gt;Chyba najczęściej stosowany wzorzec projektowy. Bardzo często też implementowany błędnie - większość przykładów dostępnych w sieci nie bierze zupełnie pod uwagę wielowątkowości. Przykład na &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpatterns/html/ImpSingletonInCsharp.asp"&gt; MSDN &lt;/a&gt; też nie jest idealny. Dobra, najpierw działający kod:&lt;/p&gt;&lt;br/&gt;&lt;pre&gt;/// &amp;lt;summary&gt;&amp;lt;/summary&gt;&lt;br/&gt;public sealed class Singleton&lt;br/&gt;{&lt;br/&gt;	#region Singleton&lt;br/&gt;	/// &amp;lt;summary&gt;ukryty konstruktor&amp;lt;/summary&gt;&lt;br/&gt;	private Singleton()&lt;br/&gt;	{}&lt;br/&gt;&lt;br/&gt;	/// &amp;lt;value&gt;Dostep do instancji singletona&amp;lt;/value&gt;&lt;br/&gt;	public static Singleton Instance&lt;br/&gt;	{ get { return InstaceHolder.instance; } }&lt;br/&gt;&lt;br/&gt;	/// &amp;lt;summary&gt;klasa wewnętrzna przechowująca instancję&amp;lt;/summary&gt;&lt;br/&gt;	class InstaceHolder&lt;br/&gt;	{&lt;br/&gt;		/// &amp;lt;summary&gt;konstruktor statyczny,&lt;br/&gt;		/// by kompilator NIE oznaczyl klasy jako BeforeFieldInit&amp;lt;/summary&gt;&lt;br/&gt;		static InstaceHolder() {}&lt;br/&gt;&lt;br/&gt;		/// &amp;lt;summary&gt;instancja singletona&amp;lt;/summary&gt;&lt;br/&gt;		internal static readonly Singleton instance = new Singleton();&lt;br/&gt;	}&lt;br/&gt;	#endregion&lt;br/&gt;}&lt;/pre&gt;&lt;br/&gt;&lt;p&gt;I po kolei, o co w tym chodzi. Sama klasa oznaczona jako sealed, czyli nie można z niej dziedziczyć. Nie chcemy, by ktos stworzył klasę potomną, która będzie pozwalała na utworzenie wielu instancji. Funkcjonalność zbliżoną do polimorfizmu może nam łatwo dostarczyć np. wzorzec State.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Konstruktor prywatny, żeby nikt nam "na boku" nie utworzył instancji klasy.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Własność publiczna Instance - jedyny dostęp do singletona. Metody niestatyczne będzie się w nim wywoływać przez Singleton.Instance.MojaMetoda(); &lt;/p&gt;&lt;br/&gt;&lt;p&gt;Klasa wewnętrza pozwala nam na leniwe, czyli opóźnione utworzenie instancji. Dopiero pierwsze odwołanie do Singleton.Instance utworzy obiekt. Kostruktor statyczny w InstanceHolder wymusza na kompilatorze, by &lt;b&gt;nie&lt;/b&gt; oznaczał klasy jako BeforeFieldInit. To znaczy, że pola statyczne zostaną zainicjowane dopiero przy pierwszym odwołaniu do klasy (dostęp do statycznego pola/metody lub utworzenie instancji), a nie "na zapas". Uwaga - chodzi o pola/metody klasy InstanceHolder, dostęp do statycznych pól czy metod Singletona nie spowoduje zainicjalizowania go.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Inicjalizacja singletona powinna trafić do prywatnego konstruktora, a nie statycznego. W ogóle - ze statycznymi konstruktorami lepiej ostrożnie. InstanceHolder.instance mógłbym zainicjalizować w &lt;code&gt;static InstaceHolder()&lt;/code&gt;, ne? Haczyk znajduje się w specyfikacji języka C#.&lt;/p&gt;&lt;blockquote&gt;The static constructor for a class executes at most once in a given application domain.&lt;/blockquote&gt;&lt;p&gt;Najwyżej raz oznacza, że może &lt;b&gt;nie zostać wykonany&lt;/b&gt; ani razu. Tak się dzieje np. w niektórych wersjach &lt;a href="http://www.mono-project.com/Main_Page"&gt;Mono&lt;/a&gt;.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&lt;br/&gt;Kod pochodzi z &lt;a href="http://www.yoda.arachsys.com/csharp/singleton.html"&gt;yoda.arachsys.com&lt;/a&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&lt;br/&gt;UPDATE: na MSDN znalazłem &lt;a href="http://msdn.microsoft.com/en-us/library/ms998558.aspx"&gt;poprawny i elegancki kod singletona&lt;/a&gt;, z innym podejściem niż pokazane powyżej.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-3913611818534501496?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/3913611818534501496/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2006/02/singleton-w-c_1469.html#comment-form' title='Komentarze (7)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/3913611818534501496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/3913611818534501496'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2006/02/singleton-w-c_1469.html' title='Singleton w C#'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-8373261908891342420</id><published>2006-01-29T17:00:00.006-08:00</published><updated>2012-01-19T08:50:57.460-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Kanji, katakana etc.</title><content type='html'>&lt;p&gt;Z zupełnie nieznanych dla mnie przyczyn, spora część moich najbliższych znajomych zanieczyszcza swoje przemyślenia dużą ilością znaczków spoza alfabetu łacińskiego. Jeszcze żeby ograniczali się do względnie małej (kilkadziesiąt glifów, jeśli się nie mylę) katakany. Ale jest pełen przekrój przez alfabety japońskie, znaki chińskie, niedługo pewnie ktoś zacznie dla sportu pisać po koreańsku…&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Na pytanie jakiej czcionki potrzebuję, by nie widzieć wielokrotnych '?' w tekście ich stron otrzymałem standardową odpowiedź &lt;abbr title="Works For Me"&gt;WFM&lt;/abbr&gt;. No tak, jak komuś system instalował informatyk w Chinach, to nie ma problemu z chińskimi czcionkami. Potem pojawiła się propozycja, abym z 'Panelu Sterowania -&gt; Opcje Regionalne -&gt; Języki' doinstalował obsługę języków wschodnioazjatyckich… Miałem mały problem - pod KDE nie ma Panelu Sterowania ;-) . A w Windows taka instalka waży dodatkowe 230MB. I u mnie, z nieznanych mi przyczyn, nie działa.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Na szczęscie Microsoft przygotował czcionkę Arial Unicode, dołączaną do Windows XP oraz Office'a 2000. Zaraz, u mnie znów jej nie ma. W legalnym Windows... chyba zbyt mocno "zoptymalizowałem" płytę instalacyjną. Dla podobnie zagubionych, którym Arial Unicode prawnie się należy, podpowiedź: plik nazywa się &lt;b&gt;arialuni.ttf&lt;/b&gt;, waży ok. 23MB, i jest łatwy do znalezienia w sieci. Czcionka zawiera glify dla całej tablicy Unicode, pełen zestaw znaków chińskich, japońskich, koreańskich etc. Zainstalować i zapomnieć.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Jeśli używasz linux'a, pewnie nie będziesz kupować Windows XP tylko by dostać czcionki. Alternatywy &lt;abbr title="Open Source"&gt;OS&lt;/abbr&gt; pod gentoo pojawią się w systemie po wykonaniu polecenia&lt;/p&gt;&lt;br/&gt;&lt;code&gt;emerge media-fonts/kochi-substitute media-fonts/arphicfonts media-fonts/baekmuk-fonts&lt;/code&gt;&lt;br/&gt;&lt;p&gt;Pierwsza czcionka to znaki japońskie, druga chińskie a trzecia koreańskie. [info znalezione na &lt;a href="http://forums.gentoo.org/viewtopic-p-1852138.html"&gt;Gentoo Forums&lt;/a&gt;]&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-8373261908891342420?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/8373261908891342420/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2006/01/kanji-katakana-etc_906.html#comment-form' title='Komentarze (1)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/8373261908891342420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/8373261908891342420'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2006/01/kanji-katakana-etc_906.html' title='Kanji, katakana etc.'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-2724154036385058515</id><published>2006-01-29T13:07:00.006-08:00</published><updated>2012-01-19T08:50:57.300-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unsorted ramblings'/><title type='text'>Bo butelka była z akcyzą...</title><content type='html'>&lt;a href="http://konie.wlkp.pl/skolima/jogger/uss_armed_resolve.jpg" rel="lightbox" title="Karmnik dla ptaków &amp;ldquo;Zbrojne Ramię Sprawiedliwości&amp;rdquo;"&gt;&lt;img src="http://konie.wlkp.pl/skolima/jogger/thumbs/uss_armed_resolve.jpg" alt="Karmnik dla ptaków &amp;ldquo;Zbrojne Ramię Sprawiedliwości&amp;rdquo;" title="Karmnik dla ptaków &amp;ldquo;Zbrojne Ramię Sprawiedliwości&amp;rdquo;" height="150" width="200" /&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://konie.wlkp.pl/skolima/jogger/captain_incoming_enemy_units_detected.jpg" rel="lightbox" title="Kapitanie! Zwiad donosi o obecności wróbli w pobliżu!"&gt;&lt;img src="http://konie.wlkp.pl/skolima/jogger/thumbs/captain_incoming_enemy_units_detected.jpg" alt="Kapitanie! Zwiad donosi o obecności wróbli w pobliżu!" title="Kapitanie! Zwiad donosi o obecności wróbli w pobliżu!" height="150" width="200" /&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://konie.wlkp.pl/skolima/jogger/comrades_this_is_time_of_war.jpg" rel="lightbox" title="Towarzysze, nadszedł nam czas wojenny, trudny czas…"&gt;&lt;img src="http://konie.wlkp.pl/skolima/jogger/thumbs/comrades_this_is_time_of_war.jpg" alt="Towarzysze, nadszedł nam czas wojenny, trudny czas…" title="Towarzysze, nadszedł nam czas wojenny, trudny czas…" height="150" width="200" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-2724154036385058515?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/2724154036385058515/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2006/01/bo-butelka-bya-z-akcyza_2179.html#comment-form' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/2724154036385058515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/2724154036385058515'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2006/01/bo-butelka-bya-z-akcyza_2179.html' title='Bo butelka była z akcyzą...'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-2629518053357849328</id><published>2006-01-28T08:35:00.006-08:00</published><updated>2012-01-19T08:50:57.295-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gadgets'/><title type='text'>Microsoft - Plays For Sure?</title><content type='html'>&lt;p&gt;Kupiłem w piątek czwarty odtwarzacz mp3. Pierwszy, jeszcze przed letnimi wakacjami, był &lt;a href="http://pl.europe.creative.com/products/product.asp?category=213&amp;amp;subcategory=215&amp;amp;product=10732"&gt;Creative MuVo V200 512MB&lt;/a&gt; . Wybrany, ponieważ:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Creative ma reputację firmy znającej się na dźwięku komputerowym&lt;/li&gt;&lt;li&gt;flash (mały, lekki, dłużej działa na bateriach, jak spadnie nic mu się nie stanie, nie szkodzi mu bieganie/podskakiwanie/jazda na rowerze)&lt;/li&gt;&lt;li&gt;wpina się jako pendrive do dowolnego komputera z &lt;a href="http://pl.wikipedia.org/wiki/Usb"&gt;&lt;abbr title="Universal Serial Bus"&gt;USB&lt;/abbr&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br/&gt;&lt;p&gt;Creative po dwóch miesiącach zaczął się wieszać. Odtwarzał, nagle przestawał, nie reagował na nic i pomagał mu tylko format. Serwis nic nie wymyślił, dostałem pieniądze z powrotem. Na całe szczęście. &lt;a href="http://komotsu.wordpress.com"&gt;Shin&lt;/a&gt;'a MuVo, kupiony miesiąc wcześniej, działa, ale ze względu na nieprzemyślaną konstrukcję wtyczki &lt;abbr title="Universal Serial Bus"&gt;USB&lt;/abbr&gt; - trzeba go było skleić taśmą, bo po prostu się rozpadł.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Kolejny zakup był przemyślany dokładniej. Do Creative'a nie miałem większych zastrzeżeń, ale po przebiciu się przez sporo recenzji na różnych stronach - wybór padł na iAudio. Snobizm trochę ;-) , ale iAudio i iRiver wszędzie chwalone są za najlepszą jakość dźwięku wśród odtwarzaczy. Oczywiście, kryteria stare nadal obowiązywały, a że pieniędzy miałem nieco więcej, zdecydowałem się na &lt;a href="http://www.iaudio.pl/products.php?id=7&amp;amp;sub=1"&gt;iAudio 5 1GB&lt;/a&gt;. Dodatkowo, nagrywając dźwięk (mikrofon "zbiera" jak porządny dyktafon) potrafi go w czasie rzeczywistym kompresować do mp3. Zastanawiałem się też nad &lt;a href="http://www.iaudio.pl/products.php?id=5&amp;amp;sub=1"&gt;iAudio U2 1GB&lt;/a&gt;, z tą samą elektroniką, ale akumulatorem wewnętrznym (odtwarzacz jest dzięki temu mniejszy), jednak przeważyła wygoda - wychodząc z domu mogę zabrać ze sobą dodatkowe baterie i wymienić, kiedy stare się wyczerpią. A odtwarza na jednej baterii jakieś 20 godzin.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Na gwiazdkę brat chciał tez odtwarzacz. Dostał taki sam, wersja 512MB. No i jeszcze siostra...&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Siostra wymyśliła sobie czerwony. Koniecznie, żaden inny, nie metaliczny czerwony, wiśniowy, koniecznie musi być czerwony. Ugh... &lt;a href="http://www.iriver.pl/spec.php?prodname=T10_512"&gt;iRiver T10 512MB&lt;/a&gt; spodobał się. Wczoraj odebrałem go w sklepie, przyniosłem do domu... Działa. Dźwięk jak to iRiver - jakość bardzo dobra, nieco lepiej niż moje iAudio - ale to kwestia słuchawek, na takich samych - jakość jak dla mnie identyczna. Zdecydowanie lepsza, niż z wieży stojącej w pokoju ;-) Jest jeden haczyk, dla mojej siostry (na razie) niezauważalny.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;iRiver T10 ze znaczkiem "Microsoft Plays For Sure" wymaga Windows Media Player'a 10. Koniec. Nie da się go podpiąć do komputera z Windows 98, nie ma mowy o żadnym Linuksie czy MacOS (chociaż podobno jakiś soft do obsługi aparatów fotograficznych potrafi wgrać na niego pliki). Nie jest też widoczny jako dysk, tylko jako MTP Device. Można, niby, wgrywać muzykę przez Explorer'a - ale nie np. Total Commander'em, bo nie odtwarzacz nie jest rozpoznawany jako napęd! Co więcej - jedyną zalecaną metoda wgrywania muzyki jest przenoszenie jej poprzez &lt;abbr title="Windows Media Player"&gt;WMP&lt;/abbr&gt; 10. I to nie żart, mp3 wgrywane inaczej potrafią np. skakać przy odtwarzaniu czy się zacinać.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Jest wersja T10 oznaczana jako &lt;abbr title="USB Mass Storage"&gt;UMS&lt;/abbr&gt;, widoczna po wpięciu jako normalny napęd. Niestety, do kupienia tylko w Korei i okolicach. Na forum Mystic River jest sporo tematów z pytaniami o możliwość &lt;a href="http://www.misticriver.net/showthread.php?t=36052"&gt;podmiany firmware'u wersji MTP na UMS&lt;/a&gt;. Jak na razie bez efektów.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Konkluzje? Unikać jak ognia odtwarzaczy z logo "Microsoft Plays For Sure". Ponieważ na pewno NIE działają bez Windows Media Player 10.&lt;/p&gt; &lt;img src="http://konie.wlkp.pl/skolima/jogger/playsforsure.jpg" alt="PlaysForSure logo" title="Sucks for Sure"/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-2629518053357849328?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/2629518053357849328/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2006/01/microsoft-plays-for-sure_1284.html#comment-form' title='Komentarze (1)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/2629518053357849328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/2629518053357849328'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2006/01/microsoft-plays-for-sure_1284.html' title='Microsoft - Plays For Sure?'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-6394393812300592723</id><published>2006-01-26T14:28:00.006-08:00</published><updated>2012-01-19T08:50:57.401-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gadgets'/><title type='text'>Access Point</title><content type='html'>&lt;p&gt;Planuję wyprowadzkę komputera z jego leża w piwnicy na górę, do mieszkania. Problem w tym, że o ile rodzinka nie miała nic przeciwko wierceniu dziur wielkości kciuka w ścianach w piwnicy (musiała przejść wtyczka &lt;a href="http://en.wikipedia.org/wiki/RJ-11"&gt;RJ-11&lt;/a&gt; :-) ), to raczej nie zgodzą się na robienie takich dziur w mieszkaniu, przez dwa piętra. No cóż, skoro nie można położyć przewodów, pozostaje łączność bezprzewodowa :-]&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Zacząłem od sprawdzenia na pożyczonym sprzęcie, czy będzie wszystko działać na potrzebną mi odległość. Styka. Krok kolejny: do sklepu, wybrać jakiś sensowny &lt;a href="http://en.wikipedia.org/wiki/Access_point"&gt;&lt;abbr title="Access Point"&gt;AP&lt;/abbr&gt;&lt;/a&gt; z modemem &lt;a href="http://en.wikipedia.org/wiki/Digital_Subscriber_Line"&gt;&lt;abbr title="Digital Subscriber Line"&gt;DSL&lt;/abbr&gt;&lt;/a&gt;. I tutaj pojawił się problem. W interesującym mnie przedziale cenowym wybór jest dość spory - jak dla mnie zbyt spory ;-)&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Po wstępnym przesiewie zostały&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://sklep.komputronik.pl/pelny.php?id=11214"&gt;D-Link Wireless G ADSL Broadband Router DSL-G604T&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://sklep.komputronik.pl/pelny.php?id=19020"&gt;Linksys Router + Modem ADSL WAG354G&lt;/a&gt;&lt;/li&gt;&lt;li&gt;EDIMAX (AR-7064Sg+) ADSL2 MODEM/ ROUTER, 4xLAN, 802.11g+&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Wszystkie w tej samej cenie (380 złotych brutto), właściwe te same możliwości. D-Link polecany przez znajomego, który już ma sprzęt tej firmy. Linksys ma z kolei bardzo dobre recenzje w sklepie komputronika, i ku niemu bym się skłaniał. Edimax, dla mnie zupełny &lt;i&gt;noname&lt;/i&gt;, interesujący jest ze względu na obsługę standardu &lt;a href="http://en.wikipedia.org/wiki/802.11g"&gt;802.11g+&lt;/a&gt;, czyli transfer (teoretycznie) rzędu 108Mbps oraz &lt;a href="http://en.wikipedia.org/wiki/Wi-Fi_Protected_Access"&gt;&lt;abbr title="Wi-Fi Protected Access"&gt;WPA&lt;/abbr&gt;&lt;/a&gt; oprócz złamanego już &lt;a href="http://en.wikipedia.org/wiki/WEP"&gt;&lt;abbr title="Wired Equivalent Privacy"&gt;WEP&lt;/abbr&gt;&lt;/a&gt;. I masz babo placek. Co do cholery wybrać?&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Po fakcie: niestety, kupiłem &lt;a href="http://skolima.jogger.pl/2006/09/05/d-link-g604t/"&gt;D-Link'a G604T&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-6394393812300592723?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/6394393812300592723/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2006/01/access-point_3207.html#comment-form' title='Komentarze (12)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/6394393812300592723'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/6394393812300592723'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2006/01/access-point_3207.html' title='Access Point'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-8798015954938851671</id><published>2006-01-24T16:52:00.006-08:00</published><updated>2012-01-19T08:50:57.468-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gadgets'/><title type='text'>Toshiba Satellite 2140 - tam i z powrotem</title><content type='html'>&lt;p&gt;&lt;a href="http://momisia.blog.pl/komentarze/index.php?nid=10716015"&gt;Znajoma&lt;/a&gt; narzekała ostatnio na problemy z laptopem. Że hałasuje, grzeje się i wygląda, jakby miał wybuchnąć. Na słuch - rozwalone chłodzenie? Dziś po zajęciach miałem ją odwiedzić i obejrzeć. Zabrałem mój  uniwersalny śrubokręt™ i byłem gotów. Całe szczęście, że podczepił się jeszcze PiBis, zaopatrzony w zestaw wkrętaków zegarmistrzowskich, wielgachnym śrubokrętem wiele bym nie zdziałał. Ale na usprawiedliwienie - pozwala zrobić wszystko przy kompie stacjonarnym. Moja wina, że laptopy takie małe?&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Na miejscu - Toshiba nie hałasuje. Oczywiście, przyszedł serwis ;-) to wszystko działa. Ale nie odpuściliśmy, żaden z nas jeszcze laptopa nie rozkręcał, mieliśmy taką okazję przepuścić? Po wykręceniu wszystkich widocznych (i nie - 4 były chowane pod akumulatorem) śrubek obudowa nadal nie dawała się otworzyć. Ja poszedłem &lt;a href="http://google.com"&gt;zasięgnąć rady wyroczni&lt;/a&gt;, PiBis kombinbował. Był szybszy - ostatnie dwie śrubki okazały się ukryte pod płytką z przyciskiem 'Power'. Potem nastąpiła chwila wahania - czy po odczepieniu kabli łączących monitor/klawiaturę z resztą wnętrzności damy radę je zmonotowac ponownie? Zaryzykowaliśmy, płyta główna na wierzchu. Jeszcze tylko wymontować elegancki &lt;a href="http://en.wikipedia.org/wiki/Heatpipe"&gt;heatpipe&lt;/a&gt; i wentylator dał się wyjąć do czyszczenia. Wtedy w końcu ktoś zasugerował, że gdyby od początku robić zdjęcia, to potem byłoby łatwiej złożyć całość z powrotem :-] No, mądry Polak po szkodzie. Całe szczęście, że w Satellite każdy slot na śrubkę był elegancko opisany - bardzo dobry pomysł. Ale przynajmniej mamy dokumentację techniczną jak złożyć Toshibę Satellite 2140 z części :-D&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Wymontowany monitor&lt;br/&gt;&lt;img src="http://konie.wlkp.pl/skolima/jogger/toshiba_satellite_2140/01_monitor.jpg" alt="Wymontowany monitor" title="Wymontowany monitor"/&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Obudowa od spodu&lt;br/&gt;&lt;img src="http://konie.wlkp.pl/skolima/jogger/toshiba_satellite_2140/02_gora_obudowy.jpg" alt="Obudowa od spodu" title="Obudowa od spodu"/&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Wszystkie wykręcone śrubki&lt;br/&gt;&lt;img src="http://konie.wlkp.pl/skolima/jogger/toshiba_satellite_2140/03_screws_and_workbench.jpg" alt="Wszystkie wykręcone śrubki" title="Wszystkie wykręcone śrubki"/&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Płyta główna bez wentylatora&lt;br/&gt;&lt;img src="http://konie.wlkp.pl/skolima/jogger/toshiba_satellite_2140/04_mainboard_without_cooler.jpg" alt="Płyta główna bez wentylatora" title="Płyta główna bez wentylatora"/&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Klawiatura, monitor, wentylator i heatpipe&lt;br/&gt;&lt;img src="http://konie.wlkp.pl/skolima/jogger/toshiba_satellite_2140/05_keyboard_cooler_and_heatpipe.jpg" alt="Klawiatura, monitor, wentylator i heatpipe" title="Klawiatura, monitor, wentylator i heatpipe"/&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Precyzyjne narzędzie każdego zegarmistrza&lt;br/&gt;&lt;img src="http://konie.wlkp.pl/skolima/jogger/toshiba_satellite_2140/06_precyzyjne_narzedzie_kazdego_zegarmistrza.jpg" alt="Precyzyjne narzędzie każdego zegarmistrza" title="Precyzyjne narzędzie każdego zegarmistrza"/&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Przedmuchiwanie wentylatora za pomocą odkurzacza&lt;br/&gt;&lt;img src="http://konie.wlkp.pl/skolima/jogger/toshiba_satellite_2140/07_czyszczenie_wentylatorka.jpg" alt="Przedmuchiwanie wentylatora za pomocą odkurzacza" title="Przedmuchiwanie wentylatora za pomocą odkurzacza"/&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Wentylator wraca na miejsce&lt;br/&gt;&lt;img src="http://konie.wlkp.pl/skolima/jogger/toshiba_satellite_2140/08_wentylator_wraca_na_miejsce.jpg" alt="Wentylator wraca na miejsce" title="Wentylator wraca na miejsce"/&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Osłonka na &lt;abbr title="Central Processing Unit"&gt;CPU&lt;/abbr&gt;...&lt;br/&gt;&lt;img src="http://konie.wlkp.pl/skolima/jogger/toshiba_satellite_2140/09_dokrecanie_obudowy_cpu.jpg" alt="Osłonka na CPU..." title="Osłonka na CPU..."/&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Jeszcze tylko klawiatura&lt;br/&gt;&lt;img src="http://konie.wlkp.pl/skolima/jogger/toshiba_satellite_2140/10_brakuje_tylko_klawiatury.jpg" alt="Jeszcze tylko klawiatura" title="Jeszcze tylko klawiatura"/&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Już wszystko podłączone&lt;br/&gt;&lt;img src="http://konie.wlkp.pl/skolima/jogger/toshiba_satellite_2140/11_jest_i_klawiatura.jpg" alt="Już wszystko podłączone" title="Już wszystko podłączone"/&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Cztery połączenia, których się baliśmy&lt;br/&gt;&lt;img src="http://konie.wlkp.pl/skolima/jogger/toshiba_satellite_2140/12_tricky_cables.jpg" alt="Cztery połączenia, których się baliśmy" title="Cztery połączenia, których się baliśmy"/&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Przed skręceniem warto sprawdzić, czy wszystko działa&lt;br/&gt;&lt;img src="http://konie.wlkp.pl/skolima/jogger/toshiba_satellite_2140/13_will_it_boot_up.jpg" alt="Przed skręceniem warto sprawdzić, czy wszystko działa" title="Przed skręceniem warto sprawdzić, czy wszystko działa"/&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;To są właśnie te ukryte mocowania&lt;br/&gt;&lt;img src="http://konie.wlkp.pl/skolima/jogger/toshiba_satellite_2140/14_to_jest_ten_haczyk.jpg" alt="To są właśnie te ukryte mocowania" title="To są właśnie te ukryte mocowania"/&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;A tak się je odczepia&lt;br/&gt;&lt;img src="http://konie.wlkp.pl/skolima/jogger/toshiba_satellite_2140/15_haczyk_take_two.jpg" alt="A tak się je odczepia" title="A tak się je odczepia"/&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Wkręcenie ostatniej śrubki&lt;br/&gt;&lt;img src="http://konie.wlkp.pl/skolima/jogger/toshiba_satellite_2140/16_ostatnia_srobka.jpg" alt="Wkręcenie ostatniej śrubki" title="Wkręcenie ostatniej śrubki"/&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Obudowa montowana jest 20 śrubkami!&lt;br/&gt;&lt;img src="http://konie.wlkp.pl/skolima/jogger/toshiba_satellite_2140/17_14_srobek_od_obudowy.jpg" alt="Obudowa montowana jest 20 śrubkami!" title="Obudowa montowana jest 20 śrubkami!"/&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Jeśli ktoś wie, co to za złącze, proszę o info...&lt;br/&gt;&lt;img src="http://konie.wlkp.pl/skolima/jogger/toshiba_satellite_2140/18_wtf_is_this.jpg" alt="Jeśli ktoś wie, co to za złącze, proszę o info..." title="Jeśli ktoś wie, co to za złącze, proszę o info..."/&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;I już po wszystkim.&lt;br/&gt;&lt;img src="http://konie.wlkp.pl/skolima/jogger/toshiba_satellite_2140/19_all_done.jpg" alt="I już po wszystkim." title="I już po wszystkim."/&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-8798015954938851671?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/8798015954938851671/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2006/01/toshiba-satellite-2140-tam-i-z-powrotem_4173.html#comment-form' title='Komentarze (6)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/8798015954938851671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/8798015954938851671'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2006/01/toshiba-satellite-2140-tam-i-z-powrotem_4173.html' title='Toshiba Satellite 2140 - tam i z powrotem'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-3700694226739876676</id><published>2006-01-23T10:05:00.006-08:00</published><updated>2012-01-19T08:50:57.337-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unsorted ramblings'/><title type='text'>Mmmm... upgrades.</title><content type='html'>&lt;p&gt;Drobne poprawki na joggu. Po kolei:&lt;/p&gt;&lt;br/&gt;&lt;ul&gt;&lt;br/&gt;&lt;li&gt;Google Analytics, z hack'ami wziętymi od &lt;a href="http://rl.stamina.pl/2005/11/21/google-analytics-cd/"&gt;hao&lt;/a&gt; i &lt;a href="http://perfectionorvanity.com/"&gt;riddle&lt;/a&gt;. Nareszcie koniec z moim pięknym inaczej licznikiem własnej roboty.&lt;/li&gt;&lt;br/&gt;&lt;li&gt;Feed RSS z newsami przez &lt;a href="http://www.feedburner.com/"&gt;FeedBurner&lt;/a&gt;. Dalej w duchu zbierania statystyk. Korzystających z feed'a tutaj lub na &lt;a href="http://uch0.jogger.pl"&gt;uch0&lt;/a&gt; proszę o uaktualnienie odnośników.&lt;/li&gt;&lt;br/&gt;&lt;li&gt;Ludzkie czcionki, w końcu miałem dość nieczytelnej Book Antiqua. Którą bardzo lubię - ale na papierze.&lt;/li&gt;&lt;br/&gt;&lt;/ul&gt;&lt;p&gt;&lt;br/&gt;Za jakiś czas mam zamiar zrobić nowy layout, ten nie najlepiej świadczy o moich umiejętnościach :-/ No ale to po egzaminie inżynierskim.&lt;br/&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-3700694226739876676?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/3700694226739876676/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2006/01/mmmm-upgrades_6723.html#comment-form' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/3700694226739876676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/3700694226739876676'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2006/01/mmmm-upgrades_6723.html' title='Mmmm... upgrades.'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-6639475962082298696</id><published>2006-01-17T14:08:00.006-08:00</published><updated>2012-01-19T08:50:57.411-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='konnekt'/><title type='text'>Jabber od google wychodzi w świat</title><content type='html'>&lt;p&gt;&lt;!-- kplaneta --&gt; Googlowe serwery &lt;abbr title="eXtensible Messaging and Presence Protocol"&gt;XMPP&lt;/abbr&gt; w końcu otwierają się na świat. Ruszyło &lt;abbr title="Server To Server"&gt;s2s&lt;/abbr&gt;. Czyli z konta na google można - w końcu - porozmiawiać z ok. 10 milionami innych użytkowników jabbera. &lt;strike&gt;Jak zalogować się na konto na gmail z Konnekta? Potrzebny jest mały przekręt ;-) pomysłu &lt;a href="http://olorin.info"&gt;Olórina&lt;/a&gt;. A zatem: uruchom "&lt;code&gt;notepad %WINDIR%\system32\drivers\etc\hosts&lt;/code&gt;" i dodaj do pliku linijkę "&lt;code&gt;216.239.37.125 gmail.com&lt;/code&gt;".&lt;/strike&gt; kJabbera należy skonfigurować tak:&lt;/p&gt;&lt;img src="http://konie.wlkp.pl/skolima/gmail.com.png" alt="gmail i Konnekt"/&gt;&lt;p&gt;&lt;b&gt;Uaktualnienie&lt;/b&gt;: google ustawiło na serwerze odpowiedź DNS SRV, używane do mapowania nazwy użytkownika na adres serwera. W skrócie: hack nie jest potrzebny, wystarczy ustawić to co na screenie :-)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-6639475962082298696?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/6639475962082298696/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2006/01/jabber-od-google-wychodzi-w-swiat_4016.html#comment-form' title='Komentarze (3)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/6639475962082298696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/6639475962082298696'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2006/01/jabber-od-google-wychodzi-w-swiat_4016.html' title='Jabber od google wychodzi w świat'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-688281825624854335</id><published>2006-01-13T18:04:00.006-08:00</published><updated>2012-01-19T08:50:57.424-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unsorted ramblings'/><title type='text'>Pandora.com</title><content type='html'>&lt;p&gt;&lt;a href="http://pandora.com"&gt;Pandora, bardzo fajne "radio" internetowe&lt;/a&gt;, potrafiące się uczyć naszych preferencji i inteligentnie sugerujące nowości. Zabawka polecona wczoraj przez &lt;b&gt;siję&lt;/b&gt;, dziś pokazała jeszcze jedną miłą cechę.&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Konnekt nagle zaalarmował mnie, że katalog %temp% mocno się rozrósł... Otóż &lt;b&gt;Pandora&lt;/b&gt; wspaniałomyślnie zachowuje nam wszystkie odtworzone piosenki na dysku. Dokładniej, to w folderze %temp% powstaje podkatalog plugtmp-x (x to liczba), a w nim kolejne pliki access-x. Wystarczy dorzucić im rozszerzenie .mp3 i ... słuchać :P&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-688281825624854335?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/688281825624854335/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2006/01/pandoracom_3249.html#comment-form' title='Komentarze (7)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/688281825624854335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/688281825624854335'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2006/01/pandoracom_3249.html' title='Pandora.com'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-7466757110732334408</id><published>2006-01-12T13:12:00.006-08:00</published><updated>2012-01-19T08:50:57.434-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unsorted ramblings'/><title type='text'>Automatyczne numerowanie build'ów w Visual Studio 2003/2005</title><content type='html'>&lt;p&gt;Jeśli przesiadłeś się z produktów Borlanda, pewnie dziwi Cię brak tej prostej możliwości. W Builderze wystarczyło zaznaczyć jednego checkbox'a i — voila! — każdy kolejny build programu miał podbity numer wersji.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Visual Studio nie oferuje takiej opcji. Może dlatego, że w głównej dla niego platformie - .Net - wystarczy wpisanie * zamiast części numeru wersji, by kompilator sam go uzupełniał? Problem jest ze zwykłymi binarkami, dla których numer wersji ustawiany jest na podstawie pliku *.rc .&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Rozwiązanie jest kilkuetapowe. Najpierw trzeba dodać do projektu plik .rc, jeśli jeszcze takiego nie ma (panel 'Solution Explorer', &lt;acronym title="Right Mouse Button"&gt;RMB&lt;/acronym&gt; na projekcie, 'Add-&gt;New Item', 'Resource File'), po dodaniu utworzyć numer wersji (panel 'Resource View', &lt;acronym title="Right Mouse Button"&gt;RMB&lt;/acronym&gt;, 'Add-&gt;Resource', 'Version'). Kiedy projekt już posiada odpowiedni plik zasobów, należy otworzyć go w edytorze tekstowym (panel 'Solution Explorer', &lt;acronym title="Right Mouse Button"&gt;RMB&lt;/acronym&gt; na pliku *.rc, 'View code') i podmienić kod &lt;/p&gt;&lt;pre&gt;VS_VERSION_INFO VERSIONINFO&lt;br/&gt; FILEVERSION 1,0,0,1&lt;br/&gt; PRODUCTVERSION 1,0,0,1&lt;br/&gt; FILEFLAGSMASK 0x17L&lt;br/&gt;#ifdef _DEBUG&lt;br/&gt; FILEFLAGS 0x1L&lt;br/&gt;#else&lt;br/&gt; FILEFLAGS 0x0L&lt;br/&gt;#endif&lt;br/&gt; FILEOS 0x4L&lt;br/&gt; FILETYPE 0x1L&lt;br/&gt; FILESUBTYPE 0x0L&lt;br/&gt;BEGIN&lt;br/&gt;    BLOCK "StringFileInfo"&lt;br/&gt;    BEGIN&lt;br/&gt;        BLOCK "041504b0"&lt;br/&gt;        BEGIN&lt;br/&gt;            VALUE "FileDescription", "dxfgdfgd Application"&lt;br/&gt;            VALUE "FileVersion", "1, 0, 0, 1"&lt;br/&gt;            VALUE "InternalName", "dxfgdfgd"&lt;br/&gt;            VALUE "LegalCopyright", "Copyright (C) 2006"&lt;br/&gt;            VALUE "OriginalFilename", "dxfgdfgd.exe"&lt;br/&gt;            VALUE "ProductName", " dxfgdfgd Application"&lt;br/&gt;            VALUE "ProductVersion", "1, 0, 0, 1"&lt;br/&gt;        END&lt;br/&gt;    END&lt;br/&gt;    BLOCK "VarFileInfo"&lt;/pre&gt;&lt;p&gt; na &lt;/p&gt;&lt;pre&gt;VS_VERSION_INFO VERSIONINFO&lt;br/&gt; FILEVERSION FILEVER&lt;br/&gt; PRODUCTVERSION PRODUCTVER&lt;br/&gt; FILEFLAGSMASK 0x17L&lt;br/&gt;#ifdef _DEBUG&lt;br/&gt; FILEFLAGS 0x1L&lt;br/&gt;#else&lt;br/&gt; FILEFLAGS 0x0L&lt;br/&gt;#endif&lt;br/&gt; FILEOS 0x4L&lt;br/&gt; FILETYPE 0x1L&lt;br/&gt; FILESUBTYPE 0x0L&lt;br/&gt;BEGIN&lt;br/&gt;    BLOCK "StringFileInfo"&lt;br/&gt;    #include "VersionNo.h"&lt;br/&gt;    BEGIN&lt;br/&gt;        BLOCK "041504b0"&lt;br/&gt;        BEGIN&lt;br/&gt;            VALUE "FileDescription", "dxfgdfgd Application"&lt;br/&gt;            VALUE "FileVersion", STRFILEVER&lt;br/&gt;            VALUE "InternalName", "dxfgdfgd"&lt;br/&gt;            VALUE "LegalCopyright", "Copyright (C) 2006"&lt;br/&gt;            VALUE "OriginalFilename", "dxfgdfgd.exe"&lt;br/&gt;            VALUE "ProductName", " dxfgdfgd Application"&lt;br/&gt;            VALUE "ProductVersion", STRPRODUCTVER&lt;br/&gt;        END&lt;br/&gt;    END&lt;br/&gt;    BLOCK "VarFileInfo"&lt;/pre&gt;&lt;p&gt;Teraz do projektu trzeba dodać plik VersionNo.h (panel 'Solution Explorer', &lt;acronym title="Right Mouse Button"&gt;RMB&lt;/acronym&gt; na projekcie, 'Add-&gt;New Item', 'Code-&gt;Header File'), w którym zdefiniowane będą użyte przed chwilą stałe. Powinien się w nim znaleźć następujący kod: &lt;/p&gt;&lt;pre&gt;#define FILEVER  1,0,0,00001&lt;br/&gt;#define PRODUCTVER  1,0,0,00001&lt;br/&gt;#define STRFILEVER  "1, 0, 0, 00001\0"&lt;br/&gt;#define STRPRODUCTVER  "1, 0, 0, 00001\0"&lt;/pre&gt;&lt;p&gt;Ostatnim krokiem jest skłonienie &lt;acronym title="Integrated Development Environment"&gt;IDE&lt;/acronym&gt; do uaktualniania tej informacji po każdym zbudowaniu projektu. W tym celu albo piszesz własny skrypt/program/cokolwiek, albo używasz mojego &lt;a href="http://konie.wlkp.pl/skolima/Autoincrement.exe"&gt;Autoincrement&lt;/a&gt;. Plik należy umieścić w katalogu projektu i włączyć w opcjach uruchomienie go każdorazowo po zbudowaniu projektu ('Project-&gt;Properties','Configuration-&gt;Build Events-&gt;Post-build Event', w 'Command line' należy wpisać 'Autoincrement.exe VersionNo.h'). Uff, koniec. Pamiętaj, by wybrać odpowienią konfigurację ustawiając 'Build Events'.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-7466757110732334408?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/7466757110732334408/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2006/01/automatyczne-numerowanie-build-w-visual_2110.html#comment-form' title='Komentarze (2)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/7466757110732334408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/7466757110732334408'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2006/01/automatyczne-numerowanie-build-w-visual_2110.html' title='Automatyczne numerowanie build&amp;#39;ów w Visual Studio 2003/2005'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-8851655033992297904</id><published>2005-12-20T05:22:00.006-08:00</published><updated>2012-01-19T08:50:57.470-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unsorted ramblings'/><title type='text'>Goodies!</title><content type='html'>&lt;p&gt;Windows Mobile 5.0 Pocket PC właśnie odmówił mi zainstalowania się, twierdząc, że brakuje mu komponentów. Strona informacyjna, na którą odsyła nie działa, ale w informacjach o nim zauważyłem teraz mały dopisek - wymaga VS 2005 w wersji wyższej niż Express.&lt;br/&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;No tak. Całe szczęście, że Politechnika udostępnia studentom konta na MSDN AA (Microsoft Developer Network Academic Alliance). Zajrzałem - VS 2005 Professional wreszcie jest. Takoż biblioteka MSDN do niego. Oczywiście za darmo, z licencją do użytku niekomercyjnego. Microsoft szkoli w ten sposób studentów na nowych programistów znających jego produkty - dla mnie czysty zysk. Czuję się jak dziecko w sklepie z zabawkami - wszystko do wyboru, wszystko bezpłatnie :-] Jedynie Office nie jest dostępny w ten sposób.&lt;br/&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Niech tylko skończy się ściągać te 5 płyt...&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;No i właśnie, licencja. &lt;a href="http://winthux.jogger.pl/"&gt;winthux&lt;/a&gt; zwracał mi kiedyś uwagę, że nie mogę legalnie pisać darmowego oprogramowania za pomocą VS z MSDN AA. Dziś przestudiowałem jeszcze raz umowę - i jestem (prawie) pewien, że mogę. Jacyś specjaliści?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-8851655033992297904?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/8851655033992297904/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2005/12/goodies_8936.html#comment-form' title='Komentarze (1)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/8851655033992297904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/8851655033992297904'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2005/12/goodies_8936.html' title='Goodies!'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-8325287501214274758</id><published>2005-12-15T15:17:00.006-08:00</published><updated>2012-01-19T08:50:57.457-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unsorted ramblings'/><title type='text'>Ja i książki</title><content type='html'>Kuzyn właśnie prosił mnie o polecenie dobrej książki o C++. Nie znam - nie czytałem. Przez ostatnie 3.5 roku studiowania informatyki przeczytałem z literatury branżowej cegłę o Delphi ("Żółta Biblia" doktora Marciniaka), podręcznik o linuxie (książka - relikt, ale bash ten sam) i tłumaczenie jakiegoś amerykańskiego dzieła o sieciach, też niezbyt na czasie (zawiera np. dowód, iż na linii telefonicznej nie da się uzykać transmisji szybszej niż 70 Kbit/s). Wszystkie trzy wymagane do zalieczenia jakiegoś przedmiotu.&lt;br /&gt; &lt;br/&gt;&lt;br/&gt;Lubię czytać. Bardzo. Jedna książka tygodniowo to minimum, bez którego czuję się źle. Nie tylko sf i fantastykę, także beletrystykę różnej wagi - niedawno na warsztacie była behawiorystyka, teraz wchodzi filozofia / kognitywistyka ("Symulakry i symulacja" Baudrillard'a). Z listy "polecanych czytań" dla biotechnologii połknąłem dwa razy tyle, co z własnej dziedziny. &lt;br /&gt; &lt;br/&gt;&lt;br/&gt;Nie uważam się za upośledzonego informatyka. Jest pod dostatkiem innych źródeł wiedzy, chociażby wykłady i ćwiczenia na uczelni dla podstaw, dokumentacja techniczna dla zaawansowanych, masa przykładów online, manuale itd. Ale nie zdarzyło mi się czytać nic takiego w formie papierowej, dla przyjemności. Brak mi kontaktu z książką informatyczną - fizycznie istniejącą! I po pierwszej styczności raczej go nie szukam. Czyżby nasze poletko wykoślawiało ludzi tak, że nie potrafią pisać zajmująco?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-8325287501214274758?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/8325287501214274758/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2005/12/ja-i-ksiazki_429.html#comment-form' title='Komentarze (3)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/8325287501214274758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/8325287501214274758'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2005/12/ja-i-ksiazki_429.html' title='Ja i książki'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-645156608542638226</id><published>2005-11-23T14:29:00.006-08:00</published><updated>2012-01-19T08:50:57.403-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>NTFS rw - final</title><content type='html'>No i wróciłem do sterowników NTFS z kernela. Paragon ntfs4linux trial nie chce się skompilować pod Gentoo, nie mam ochoty z nim walczyć - szczególnie, że trial nie pozwala na zapis :-/ a full nie znalazłem nigdzie. Captive zostaje, gdybym koniecznie potrzebował coś zapisać, ale nie nadaje się niestety do normalnego użytkowania.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-645156608542638226?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/645156608542638226/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2005/11/ntfs-rw-final_113.html#comment-form' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/645156608542638226'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/645156608542638226'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2005/11/ntfs-rw-final_113.html' title='NTFS rw - final'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-4456353486279799935</id><published>2005-11-23T11:47:00.006-08:00</published><updated>2012-01-19T08:50:57.360-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>NTFS w trybie read/write</title><content type='html'>Ciąg dalszy zmagań z systemami plików. NTFS w trybie zapis i odczyt marzył mi się od dawna... Jądro 2.6 udostępnia niby taką funkcjonalność - ale to pic na wodę, zapis ogranicza się do możliwości zmieniania istniejących plików. Captive (używający sterowników z Windows XP SP1a) właśnie testuję...&lt;br/&gt;Problem pierwszy: nie rozumie &lt;a href="http://en.wikipedia.org/wiki/NTFS_junction_point"&gt;junctions&lt;/a&gt;. To jest do przeżycia, ale driver z kernela sobie z nimi radzi :-/&lt;br/&gt;Problem drugi: wydajność. Kopiowanie plików z prędkością 200-230 KBps to nie jest szczyt marzeń. Do przełknięcia... trudniej, ale jeszcze.&lt;br/&gt;Problem trzeci: stabilność. Już wiem czemu w drzewie portage (używam Gentoo) ebuild był zamaskowany jako unstable. Driver wewnętrznie działa tak, że co 1MB danych wykonuje umount/mount by zapisać dane... Jeśli coś pójdzie nie tak, ostatnie 1MB zmian jest tracone dla zachowania spójności danych na dysku... Pomaga ręczny umount/mount po każdej zmianie, bez tego ryzykujesz, że wszystko zniknie. Ew. pojawi się znów, jeśli coś kasowałeś. To już do przełknięcia nie jest.&lt;br/&gt;&lt;br/&gt;W planach na dziś wypróbowanie jeszcze softu od Paragon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-4456353486279799935?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/4456353486279799935/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2005/11/ntfs-w-trybie-readwrite_5024.html#comment-form' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/4456353486279799935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/4456353486279799935'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2005/11/ntfs-w-trybie-readwrite_5024.html' title='NTFS w trybie read/write'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-389485095813215612</id><published>2005-11-23T04:45:00.006-08:00</published><updated>2012-01-19T08:50:57.342-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>FAT32 i polskie znaki</title><content type='html'>Niby szczegół, ale od pierwszej instalacji linuxa na domowym PC trzy lata temu użerałem się z katalogami typu "R??ne". Dało się przeżyć, dopóki tylko wyglądały brzydko. Niestety, aplikacje oparte na gtk nie potrafią takich katalogów otworzyć.&lt;br/&gt;Rozwiązanie: nieco zmieniony wpis w /etc/fstab:&lt;br/&gt;&lt;pre&gt;/dev/sda6               /mnt/drive_f    vfat            umask=0002,codepage=852,iocharset=utf8,gid=6    0 0&lt;/pre&gt;&lt;br/&gt;Oczywiście, jest haczyk :-] Kodowanie utf-8 powoduje, że litery małe i wielkie traktowane są jako osobne znaki - czyli zgodnie z unixowym standardem.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-389485095813215612?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/389485095813215612/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2005/11/fat32-i-polskie-znaki_3705.html#comment-form' title='Komentarze (4)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/389485095813215612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/389485095813215612'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2005/11/fat32-i-polskie-znaki_3705.html' title='FAT32 i polskie znaki'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-3824166897580147492</id><published>2005-11-02T06:27:00.006-08:00</published><updated>2012-01-19T08:50:57.339-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unsorted ramblings'/><title type='text'>GMail i POP / SMTP</title><content type='html'>No i coś się skopało... Bez zmieniania ustawień klienta poczty (Thunderbird) ani konta, zdalny dostęp przestał działać. Owszem, jest bardzo wygodny interfejs www - ale wolę mieć wszystkie konta obsługiwane razem. Przyzwyczajenie.&lt;br/&gt;Zdążyłem już&lt;ul&gt;&lt;li&gt;sprawdzić konfigurację Thunderbirda, skonfigurować konto od nowa&lt;/li&gt;&lt;ul&gt;skonfigurować to samo konto w Outlook Express'ie&lt;/ul&gt;&lt;li&gt;sprawdzić te same ustawienia jeszcze raz, z wyłączonym firewall'em&lt;/li&gt;&lt;/ul&gt;Bez efektu. Serwer odmawia połączenia (timeout).&lt;br/&gt;Wczoraj zaskoczył na chwilę, sam z siebie. Ściągnął jeszcze raz całą zawartość archiwum (raptem pod 400 maili, jakieś 40 MB), jakieś 2 godziny działał i POP i SMTP... a potem znów kiszka.&lt;br /&gt; &lt;br/&gt;Update: na google groups znalazłem rozwiązanie. Problem związany jest z routingiem, występuje głównie w Niemczech. No i u tych, którzy z google łączą się przez Frankfurt, jak TPSA. Fix: zmień nazwy serwerów &lt;ul&gt;&lt;li&gt;pop.gmail.com -&gt; pop.googlemail.com&lt;/li&gt;&lt;li&gt;smtp.gmail.com -&gt; smtp.googlemail.com&lt;/li&gt;&lt;ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-3824166897580147492?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/3824166897580147492/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2005/11/gmail-i-pop-smtp_832.html#comment-form' title='Komentarze (4)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/3824166897580147492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/3824166897580147492'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2005/11/gmail-i-pop-smtp_832.html' title='GMail i POP / SMTP'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-6808272566855397089</id><published>2005-10-13T14:47:00.006-07:00</published><updated>2012-01-19T08:50:57.419-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='konnekt'/><title type='text'>Klapa</title><content type='html'>&lt;!-- kplaneta --&gt; Znam już kolejne wymagania klienta odnośnie projektu SDS'owego:&lt;ul&gt;&lt;li&gt;dostępny kod źródłowy całego rozwiązania&lt;/li&gt;&lt;li&gt;pełna przenośność&lt;/li&gt;&lt;/ul&gt;Niestety, w ten sposób nie ma jak wykorzystać Konnekta w projekcie. Dobra, dalszymi informacjami nie będę już zaśmiecał planety.&lt;br/&gt;&lt;br/&gt;EOT&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-6808272566855397089?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/6808272566855397089/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2005/10/klapa_5017.html#comment-form' title='Komentarze (4)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/6808272566855397089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/6808272566855397089'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2005/10/klapa_5017.html' title='Klapa'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-6125565712355838009</id><published>2005-10-10T14:14:00.006-07:00</published><updated>2012-01-19T08:50:57.394-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='konnekt'/><title type='text'>Software Developement Studio 2</title><content type='html'>&lt;!-- kplaneta --&gt;I tak komercjalizują się moje ideały... Niestety, pomysł z wtyczką ICQ nie przeszedł. Zamiast tego będziemy realizować zlecenie zewnętrzne - bezpieczny komunikator z weryfikacją tożsamości nadawcy, potwierdzeniami dostarczenia wiadomości itd. Bezpośredniego zysku dla Konnekta z tego nie będzie - ale pośredni pewnie i owszem. W postaci 4 informatyków zaznajomionych z API Konnekta - planujemy wykorzystać Konnekt z wtyczką jabber'ową jako podstawę dla naszych paranoicznych dodatków. Albo dokładniej, forsuję takie rozwiązanie ja z kumplem - ostateczna decyzja spoczywa w rękach Architekta projektu...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-6125565712355838009?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/6125565712355838009/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2005/10/software-developement-studio-2_4220.html#comment-form' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/6125565712355838009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/6125565712355838009'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2005/10/software-developement-studio-2_4220.html' title='Software Developement Studio 2'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-8295442457567133075</id><published>2005-10-05T16:44:00.006-07:00</published><updated>2012-01-19T08:50:57.455-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='konnekt'/><title type='text'>Politechnika a Konnekt</title><content type='html'>&lt;!-- kplaneta --&gt; Dziś oficjalnie zgłaszam projekt na SDS. A o co chodzi? Na Politechnice Poznańskiej, na specjalności Inżynieria Oprogramowania, w ramach prac inżynierskich realizowane są różne projekty, zazwyczaj zgłaszane przez firmy. W trakcie semestru zimowego 4 i 5 rok (czteroosobowy team) zbiera wymagania, przygotowuje technologię i generalnie generuje duże ilości papieru :-P , a w semestrze letnim dołącza do nich zespół czterech trzecioroczniaków, którzy wcielają całość w kod. &lt;br/&gt;Zamiast wybierać któryś z komercyjnych projektów, chcę zabrać się za coś, co przyda się użytkownikom Konnekta. Tym czymś ma być pełna (czyli statusy, autoryzacja, konferencje, transfer plików, awatary i co-tam-jeszcze-jest) obsługa ICQ. Zobaczymy, co z tego wyjdzie. Jak na razie - trzeba znaleźć promotora.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-8295442457567133075?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/8295442457567133075/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2005/10/politechnika-konnekt_1128.html#comment-form' title='Komentarze (4)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/8295442457567133075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/8295442457567133075'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2005/10/politechnika-konnekt_1128.html' title='Politechnika a Konnekt'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-5392150378768753471</id><published>2005-09-04T07:45:00.006-07:00</published><updated>2012-01-19T08:50:57.382-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unsorted ramblings'/><title type='text'>Polish People's Republic</title><content type='html'>Niby minęło już ponad 15 lat od upadku komunizmu... Jednak nie według Google. Na mapie ciągle figurejemy jako &lt;a href="http://maps.google.com/maps?q=POLAND&amp;ll=52.431734,17.039108&amp;spn=0.286358,0.647095&amp;t=h&amp;hl=en"&gt;PRL&lt;/a&gt;....&lt;br/&gt;&lt;br/&gt;Nie wiem jak Tobie - mi to zdecydowanie nie odpowiada. &lt;a href="http://www.google.com/support/maps/bin/request.py"&gt;Google udostępnia formularz do zgłaszania uwag o mapach&lt;/a&gt;. Tekst który wysłałem zamieszczam poniżej, zachęcam do powielenia lub napisania własnego.&lt;br/&gt;&lt;br/&gt;&lt;blockquote&gt;I was a bit surprised that Poland on Google Maps is listed as "Polish People's Republic" - a country which was created by communists at the end of World War II and does NOT exist since 1989. Since the fall of communist system, the official name of Poland is "Rzeczpospolita Polska", which translates to Republic of Poland.&lt;br/&gt;I find it offending that Google still uses a name suggesting that Poland is a communist country - moreover, which is collocated with a time when Poland wasn't even a fully independent organism.&lt;br/&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-5392150378768753471?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/5392150378768753471/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2005/09/polish-people-republic_2422.html#comment-form' title='Komentarze (3)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/5392150378768753471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/5392150378768753471'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2005/09/polish-people-republic_2422.html' title='Polish People&amp;#39;s Republic'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-331696203227467401</id><published>2005-07-05T13:18:00.006-07:00</published><updated>2012-01-19T08:50:57.318-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>First day at work</title><content type='html'>Wniosek dnia : KDevelop ssie. Extremalnie. &lt;ul&gt;&lt;li&gt;O refaktoryzacji w życiu nie słyszał. No, ale do tego przynajmniej przyzwyczaiły mnie inne IDE do C++.&lt;/li&gt;&lt;li&gt;Code completion nie istnieje. Ta atrapa, która jest, kiedy czasem się uruchomi, proponuje kod, który (w przypadku najgorszym) nie istniał od 2 godzin.&lt;/li&gt;&lt;li&gt;Bajzel w makefile'ach... OMFG. Część błędów kompilacji zgłaszana tylko po numerze, bo genialne IDE odfiltrowało treść komunikatu.&lt;/li&gt;&lt;/ul&gt;&lt;br/&gt;Dobra. Może ktoś polecić &lt;b&gt;dobry&lt;/b&gt; program pod Linux'a do pisania kodu? Ja wiem, w vim'ie da się pisać wszystko, Thornvalds podobno tylko w nim pisze. Ale ten sam osobnik twierdzi, że debuggery sa &lt;i&gt;evil&lt;/i&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-331696203227467401?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/331696203227467401/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2005/07/first-day-at-work_7389.html#comment-form' title='Komentarze (5)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/331696203227467401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/331696203227467401'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2005/07/first-day-at-work_7389.html' title='First day at work'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-953527935764834581</id><published>2005-06-26T15:54:00.006-07:00</published><updated>2012-01-19T08:50:57.485-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unsorted ramblings'/><title type='text'>MsnBetter ThanGoogle</title><content type='html'>&lt;a href="http://browsehappy.pl/?msnbetter/thangoogle"&gt;MsnBetter ThanGoogle&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-953527935764834581?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/953527935764834581/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2005/06/msnbetter-thangoogle_8630.html#comment-form' title='Komentarze (5)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/953527935764834581'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/953527935764834581'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2005/06/msnbetter-thangoogle_8630.html' title='MsnBetter ThanGoogle'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-5621685617701003489</id><published>2005-06-22T17:06:00.006-07:00</published><updated>2012-01-19T08:50:57.387-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unsorted ramblings'/><title type='text'>Perfekcyjna Иiedoskonałość</title><content type='html'>&lt;blockquote&gt;Dwudziesty dziewiąty wiek, tak? Założę sie, że gdybym wystarczająco głeboko pogrzebał, znalazłbym tu u podstaw jakieś MSWindows czy jeszcze prymitywniejsze DOS-y. Jedyne, na co zawsze można liczyć, to konsekwentna głupota maszynowej inteligencji.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-5621685617701003489?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/5621685617701003489/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2005/06/perfekcyjna-iedoskonaosc_9335.html#comment-form' title='Komentarze (2)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/5621685617701003489'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/5621685617701003489'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2005/06/perfekcyjna-iedoskonaosc_9335.html' title='Perfekcyjna Иiedoskonałość'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-8881125495520555930</id><published>2005-06-22T08:40:00.006-07:00</published><updated>2012-01-19T08:50:57.473-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='konnekt'/><title type='text'>Imp-GG PR1</title><content type='html'>&lt;!-- kplaneta --&gt;Wtyczka skończona. W porównaniu do poprzednich wersji doszedł import smsów, poprawa kilku drobnych błędów. Do pobrania z &lt;a href="http://www.kplugins.khrone.pl/plugins.impgg.xml"&gt;kPlugins&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-8881125495520555930?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/8881125495520555930/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2005/06/imp-gg-pr1_6632.html#comment-form' title='Komentarze (4)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/8881125495520555930'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/8881125495520555930'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2005/06/imp-gg-pr1_6632.html' title='Imp-GG PR1'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-4701213747069147175</id><published>2005-06-10T05:40:00.006-07:00</published><updated>2012-01-19T08:50:57.366-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unsorted ramblings'/><title type='text'>inzynierka</title><content type='html'>Dziś mój "team" prezentował postępy w pracy... Kawałek naszego pokazu bardzo mi się spodobał.&lt;br/&gt;&lt;p&gt;&lt;br/&gt;Dodawanie nowego modułu:&lt;br/&gt;&lt;ol&gt;&lt;li&gt;Specyfikacja interefejsu na podstawie wymagań&lt;br/&gt;&lt;a href="http://img295.echo.cx/my.php?image=interface2mw.png" target="_blank"&gt;&lt;img src="http://img295.echo.cx/img295/6141/interface2mw.th.png" border="0" alt="Free Image Hosting at www.ImageShack.us" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;br/&gt;&lt;li&gt;Opisanie klas komentarzem Javadoc&lt;br/&gt;&lt;a href="http://img295.echo.cx/my.php?image=javadoc7mb.png" target="_blank"&gt;&lt;img src="http://img295.echo.cx/img295/5439/javadoc7mb.th.png" border="0" alt="Free Image Hosting at www.ImageShack.us" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;br/&gt;&lt;li&gt;Stworzenie testów jednostkowych&lt;br/&gt;&lt;a href="http://img295.echo.cx/my.php?image=tests1hu.png" target="_blank"&gt;&lt;img src="http://img295.echo.cx/img295/6678/tests1hu.th.png" border="0" alt="Free Image Hosting at www.ImageShack.us" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;br/&gt;&lt;li&gt;Implementacja + testowanie, ew. korekta interfesju&lt;br/&gt;&lt;a href="http://img295.echo.cx/my.php?image=code3lm.png" target="_blank"&gt;&lt;img src="http://img295.echo.cx/img295/4620/code3lm.th.png" border="0" alt="Free Image Hosting at www.ImageShack.us" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;br/&gt;&lt;li&gt;Integracja z pozostałymi modułami, testy systemu&lt;/li&gt;&lt;/ol&gt;&lt;br/&gt;&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;Ale by fajnie było...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-4701213747069147175?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/4701213747069147175/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2005/06/inzynierka_8683.html#comment-form' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/4701213747069147175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/4701213747069147175'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2005/06/inzynierka_8683.html' title='inzynierka'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-1105679361225213847</id><published>2005-06-06T10:47:00.006-07:00</published><updated>2012-01-19T08:50:57.250-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unsorted ramblings'/><title type='text'>Książka, cytat, joggeromania</title><content type='html'>1. Złap najbliższą książkę.&lt;br/&gt;2. Otwórz ją na 123 stronie.&lt;br/&gt;3. Znajdź piąte zdanie.&lt;br/&gt;4. Obublikuj je na swoim blogu razem z tą instrukcją.&lt;br/&gt;5. Nie szukaj najfajniejszej książki jaką można znaleźć. Użyj tej, która faktycznie leży najbliżej Ciebie.&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;b&gt;Interpreter csh oferuje kilka specjalnych zmiennych umożliwiających odwoływanie się do części przekazanych argumentów:&lt;br/&gt;\!* reprezentuje wszystkie argumenty, z jakimi uruchomiony został alias&lt;br/&gt;\!^ pierwszy argument aliasu&lt;br/&gt;\!$ ostatni agrument aliasu&lt;/b&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-1105679361225213847?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/1105679361225213847/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2005/06/ksiazka-cytat-joggeromania_3864.html#comment-form' title='Komentarze (1)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/1105679361225213847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/1105679361225213847'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2005/06/ksiazka-cytat-joggeromania_3864.html' title='Książka, cytat, joggeromania'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-81434884881968855</id><published>2005-06-01T08:02:00.006-07:00</published><updated>2012-01-19T08:50:57.452-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unsorted ramblings'/><title type='text'>http-jabber</title><content type='html'>I midlet już hula... A co robi? Wysyła i odbiera wiadomości jabberowe przesyłając ok. dziesięć razy mniej danych niż Papla. Czyli pozwala wysyłać smsy po 0.98 grosza :D . Więcej informacji tutaj : &lt;a href="http://www.konnekt.info/forum/index.php?act=ST&amp;f=5&amp;t=4573&amp;st=0#entry44434"&gt;forum Konnekt'a&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-81434884881968855?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/81434884881968855/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2005/06/http-jabber_2674.html#comment-form' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/81434884881968855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/81434884881968855'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2005/06/http-jabber_2674.html' title='http-jabber'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-2271747818981389532</id><published>2005-05-30T18:39:00.006-07:00</published><updated>2012-01-19T08:50:57.287-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unsorted ramblings'/><title type='text'>j2me</title><content type='html'>Są postępy... dziś opanowałem kontrolki różniaste i przechowywanie danych. Jak utrzymam tempo, to jutro skończe robotę :D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-2271747818981389532?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/2271747818981389532/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2005/05/j2me_8112.html#comment-form' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/2271747818981389532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/2271747818981389532'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2005/05/j2me_8112.html' title='j2me'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-6181910102592736544</id><published>2005-05-29T16:19:00.006-07:00</published><updated>2012-01-19T08:50:57.398-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unsorted ramblings'/><title type='text'>j2me</title><content type='html'>Mój pierwszy midlet właśnie się do mnie odezwał z komórki. 2 godziny i już "Hello World" umie powiedzieć :]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-6181910102592736544?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/6181910102592736544/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2005/05/j2me_6207.html#comment-form' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/6181910102592736544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/6181910102592736544'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2005/05/j2me_6207.html' title='j2me'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-5614772968424674472</id><published>2005-05-06T18:14:00.006-07:00</published><updated>2012-01-19T08:50:57.385-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='konnekt'/><title type='text'>KONNferencja 0.1.0.6</title><content type='html'>&lt;!-- kplaneta --&gt;To mam nadzieję koniec poprawek w tej wtyczce. Względem ostatniej wersji zmieniło się:&lt;br/&gt;- opcje w menu są dostępne w zależności od stopnia zaawansowania&lt;br/&gt;- dodana dodatkowa opcja ignorowania - "gdy nie znam żadnego z rozmówców"&lt;br/&gt;- wypisywanie rozmówców formatowane za pomocą zmiennych&lt;br/&gt;- konferencja dodawana ręcznie jest dopisywana do aktualnie aktywnej grupy&lt;br/&gt;&lt;br/&gt;dostępne najszybciej jak zwykle tutaj :&lt;a href="http://konie.wlkp.pl/skolima/"&gt;http://konie.wlkp.pl/skolima/&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Źródła powinny dziś rano trafić na SVN, i jak tylko hao zmiany zatwierdzi nowa wersja wypłynie na centralce beta.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-5614772968424674472?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/5614772968424674472/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2005/05/konnferencja-0106_3950.html#comment-form' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/5614772968424674472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/5614772968424674472'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2005/05/konnferencja-0106_3950.html' title='KONNferencja 0.1.0.6'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-845883417479956458</id><published>2005-05-05T15:25:00.006-07:00</published><updated>2012-01-19T08:50:57.466-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='konnekt'/><title type='text'>KONNferencja 0.1.0.5</title><content type='html'>&lt;!-- kplaneta --&gt;Poprawki względem ostatniej wersji "oficjalnej" - 0.1.0.3&lt;br/&gt;- rozbudowane wypisywanie rozmówców w oknie rozmowy&lt;br/&gt;- aktywność kontaktu w konferencji przekłada się na jego aktywność na gg&lt;br/&gt;- kontakty ignorowane na zwykłym gg są teraz też ignorowane na konferencji&lt;br/&gt;- sprawdziłem poprawność zwalnania pamięci&lt;br/&gt;- usunąłem buga znalezionego przez Siję&lt;br/&gt;&lt;br/&gt;Do pobrania :&lt;a href="http://konie.wlkp.pl/skolima/"&gt;http://konie.wlkp.pl/skolima/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-845883417479956458?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/845883417479956458/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2005/05/konnferencja-0105_8651.html#comment-form' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/845883417479956458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/845883417479956458'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2005/05/konnferencja-0105_8651.html' title='KONNferencja 0.1.0.5'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-4213226173713025613</id><published>2005-05-05T08:38:00.006-07:00</published><updated>2012-01-19T08:50:57.353-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='konnekt'/><title type='text'>Konnferencja</title><content type='html'>&lt;!-- kplaneta --&gt;Dobra, teraz post na poważnie. Poprawka błędu + zmienione wypisywanie rozmówców (potem będzie z możliwością zmiany formatowania, na razie mam z tym problem...)&lt;br/&gt;&lt;a href="http://konie.wlkp.pl/skolima/"&gt;http://konie.wlkp.pl/skolima/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-4213226173713025613?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/4213226173713025613/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2005/05/konnferencja_5637.html#comment-form' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/4213226173713025613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/4213226173713025613'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2005/05/konnferencja_5637.html' title='Konnferencja'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-5062190808902257690</id><published>2005-05-05T08:02:00.006-07:00</published><updated>2012-01-19T08:50:57.374-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unsorted ramblings'/><title type='text'>testy beta</title><content type='html'>jak napisał riddle - trzeba mieć co testować. &lt;a href="http://www.darkthrone.com/recruit.dt?uid=V30311Q30294Y30260K30226I30294V30379"&gt;klik!&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-5062190808902257690?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/5062190808902257690/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2005/05/testy-beta_8936.html#comment-form' title='Komentarze (2)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/5062190808902257690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/5062190808902257690'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2005/05/testy-beta_8936.html' title='testy beta'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-3300187165495257620</id><published>2005-05-04T07:29:00.006-07:00</published><updated>2012-01-19T08:50:57.315-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='konnekt'/><title type='text'>KONNferencja</title><content type='html'>&lt;!-- kplaneta --&gt;Porządki w kodzie. Sprawdziłem zwalnianie pamięci (a jednak wszystko gra :] ), usunąłem krytyka którego wypatrzył &lt;a href="http://droot.info/"&gt;Sija&lt;/a&gt;. W kolejce są trzy poprawki funkcjonalności, na razie nic nie wypuszczam. BTW jeśli ktoś trafił tego krytyka przez przypadek, a nie z czystej złośliwości jak wzmiankowany osobnik, to musi być naprawdę &lt;i&gt;jinxed&lt;/i&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-3300187165495257620?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/3300187165495257620/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2005/05/konnferencja_7532.html#comment-form' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/3300187165495257620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/3300187165495257620'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2005/05/konnferencja_7532.html' title='KONNferencja'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-3607514827167693332</id><published>2005-04-30T17:58:00.006-07:00</published><updated>2012-01-19T08:50:57.328-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='konnekt'/><title type='text'>znów Imp-GG</title><content type='html'>W końcu jest import smsów. Z czym są problemy?&lt;ul&gt;&lt;li&gt;-nie wiem, jak sobie radzi z odebranymi smsami - nie mam archiwum , które by takowe zawierało&lt;/li&gt;&lt;li&gt;-znak '\n' musze podmieniać na '  ', bo inaczej kIEview wyświetla go jako &amp;lt;br&amp;gt;&lt;/li&gt;&lt;li&gt;-nie wiem, czy poprawnie liczę ilość zignorowanych wiadomości... jakby ktoś mógł podać, ile wtyczka mu zgłosiła jako zignorowane...&lt;/li&gt;&lt;li&gt;-nie jestem w stanie skojarzyć smsów z nadawcami w Konnekcie - archiwum gadu przechowuje nie numery nadawców, tylko ich wyświetlaną nazwę :/&lt;/li&gt;&lt;/ul&gt;Dobra. Plik do testów (import TYLKO smsów) : &lt;a href="http://skolima.sk.funpic.de/junk/imp-gg.dll"&gt;Imp-GG&lt;/a&gt;. RFC :D&lt;br/&gt; No tak, upierdliwy funpic. Link trzeba skopiować i wkleić (żeby przeglądarka nie podała referer), bo inaczej serwer pliku nie udostępni.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-3607514827167693332?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/3607514827167693332/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2005/04/znow-imp-gg_9360.html#comment-form' title='Komentarze (3)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/3607514827167693332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/3607514827167693332'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2005/04/znow-imp-gg_9360.html' title='znów Imp-GG'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-121926205936069213</id><published>2005-04-29T10:31:00.006-07:00</published><updated>2012-01-19T08:50:57.256-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='konnekt'/><title type='text'>[Konnekt] Imp-GG</title><content type='html'>&lt;!-- kplaneta --&gt;Założenia sa takie, że do końca długiego weekendu wtyczka będzie skończona.&lt;br/&gt;Usiadłem właśnie do kodu... dziś w nocy powinno z tego być kolejne "coś" do testów.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-121926205936069213?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/121926205936069213/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2005/04/konnekt-imp-gg_2375.html#comment-form' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/121926205936069213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/121926205936069213'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2005/04/konnekt-imp-gg_2375.html' title='[Konnekt] Imp-GG'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4782981620644831943.post-8397258736598513025</id><published>2005-04-27T17:34:00.006-07:00</published><updated>2012-01-19T08:50:57.463-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unsorted ramblings'/><title type='text'>początek</title><content type='html'>zarzekałem się, że tak nisko nie upadnę... że nie będę się uzewnętrzniać przed obcymi ludźmi, pisać co mi ślina na język przyniesie...&lt;br/&gt;&lt;br/&gt;I nie mam zamiaru. Ten jogger ma w zamierzeniu być tablicą ogłoszeń dla tych, którzy skłonni są testować moje produkty w wersjach pre-alpha ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4782981620644831943-8397258736598513025?l=skolima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skolima.blogspot.com/feeds/8397258736598513025/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://skolima.blogspot.com/2005/04/poczatek_9368.html#comment-form' title='Komentarze (3)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/8397258736598513025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4782981620644831943/posts/default/8397258736598513025'/><link rel='alternate' type='text/html' href='http://skolima.blogspot.com/2005/04/poczatek_9368.html' title='początek'/><author><name>Leszek Ciesielski</name><uri>https://profiles.google.com/108191791336716408378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-TkOOiU4cWMA/AAAAAAAAAAI/AAAAAAAABjM/hw_zlSUqRAM/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry></feed>
