천객만래 [千客萬來] (It has an interminable succession of visitors)

[신경망] Self-Organizing Map(SOM), 1차원적 구현 예, 소스 포함

2001.09.20



1997년에 신경망을 공부하던 때 코딩하였던 프로그램이닷. 

우리 인간은 태어나면서 부모에게 배우기도 하지만... 아이들은 부모들이 가르치지도 않은 많은 것을 자연스럽게 터득하게 된다. 이러한 것에 대한 설명 중 하나가 필란드 헬싱키 공과대학 (Helsinki Technology University)의Teuvo Kohonen에 의해 1962년에 제안되었다. Kohonen의 NN(Neural Network)은 아이가 배우지도 않고 스스로 터득하듯이 자율적인 학습(Unsupervised Learning)의 NN모델이다. 


Kohonen의 Self-Organizing Map(SOM) 에서 Self-Organizing이란 주어진 입력패턴에 대하여 정확한 해답을 미리 주지 않고 스스로 학습할 수 있는 능력을 말한다. 특징으로는 경쟁학습과 위상보존사상(Topology Reserving Mapping), 뉴론별로 연결 강도가 존재한다. 더 자세한 이야기는 생략하기로 한다. 이 프로그램은 델파이로 구현되었으며, 예전에 구현했던 소스를 어렵게 찾아서 올립니다.



som___1D_Map.zip



Posted by SB패밀리

델파이 컴포넌트

delphi VCL



http://sf.net/projects/graphics32http://www.graphics32.org/wiki/
February 25, 2005: Release of Graphics32 1.7.1. 
개발환경 : D4,5,6,7,2005 C5,6

Graphics32 is a library designed for fast 32-bit graphics handling on Delphi and Kylix. Optimized for 32-bit pixel formats, it provides fast operations with pixels and graphic primitives, and in most cases Graphics32 outperforms the standard TCanvas? classes. It is almost a hundred times faster in per-pixel access and about 2–5 times faster in drawing lines. 

Features
Some of Graphics32 features include: 

Fast per-pixel access up to 100 times faster compared to standard TBitmap?; 
High-performance Bitmap alpha blending (including per-pixel alpha blending); 
Pixel, line and polygon antialiasing with sub-pixel accuracy (combined with alpha blending); 
Arbitrary polygon transformations and custom fillings; 
Bitmap resampling with high quality reconstruction filters (e.g. Lanczos, Cubic, Mitchell); 
A unique state-of-the-art rasterization system; 
Affine transformations of bitmaps: rotations, scaling, etc with sub-pixel accuracy; 
Arbitrary projective transformations of bitmaps; 
Arbitrary remapping transformations of bitmaps (e.g. for Warping, Morphing); 
Flexible supersampling implementation for maximum sampling quality; 
Flicker-free image displaying components with optimized double buffering via advanced MicroTiles? based repaint optimizer; 
Multiple customizible easy-to-use overlay layers; 
Locking of bitmaps for safe multithreading; 
A property editor for RGB and alpha channel loading; 
Design-time loading of image formats supported by standard TPicture; 
Works on Borland Delphi, C++ Builder and Kylix. 

As of version 1.5.1b Graphics32 is licensed under the terms of the Mozilla Public License. 

+++++ 설치

Graphics32 supports Delphi versions 4, 5, and 6, and C++ Builder 5.

Note, because some properties of range bars and gage bars have been changed, you can obtain some error messages while opening your previous Graphics32 projects. Just ignore these messages and Delphi will fix DFM files automatically.



Unzip the files; 
Add location of main installation directory to Tools | Environment Options | Library | Library Path. 
Select File | Open... on the menu bar. Set Files of type to Delphi package source, locate and open GR32_DSGN_D6.dpk (GR32_DSGN_D5 for Delphi5, GR32_DSGN_D4 for Delphi4 or GR32_DSGN_B5 for C++ Builder); 
A package editor window will appear. Click Compile, then click Install; 
If compiler asks whether you want to save changes, usually it is a good idea to choose No. 



+++++ 설명:

Additional Topics
Line Patterns

Using TImage32

Classes (Alphabetical)
TAffineTransformation

TArrowBar

TBitmap32

TBitmap32Collection

TBitmap32Item

TBitmap32List

TBitmapLayer

TByteMap

TCustomGaugeBar

TCustomImage32

TCustomImgView32

TCustomLayer

TCustomMap

TCustomPaintBox32

TCustomRangeBar

TGaugeBar

TImage32

TImgView32

TIVScrollProperties

TLayerCollection

TPaintBox32

TPaintStages

TPolygon32

TPositionedLayer

TProjectiveTransformation

TRangeBar

TRubberbandLayer

TThreadPersistent

TTransformation
Classes (Hierarchy)
TArrowBar

TCustomGaugeBar

TGaugeBar

TCustomRangeBar

TRangeBar

TBitmap32Collection

TBitmap32Item

TBitmap32List

TCustomLayer

TPositionedLayer

TBitmapLayer

TRubberbandLayer

TCustomPaintBox32

TCustomImage32

TCustomImgView32

TImgView32

TImage32

TPaintBox32

TIVScrollProperties

TLayerCollection

TPaintStages

TPolygon32

TThreadPersistent

TCustomMap

TBitmap32

TByteMap

TTransformation

TAffineTransformation

TProjectiveTransformation


Routines
AlphaComponent  Creating Points  Lighten  
AlphaToGrayscale  Creating Rectangles  OffsetRect  
ApplyLUT  EMMS  Polygon  
Blend  EqualRect  Polyline  
BlendEx  Fixed Point Math  PolyPolygon  
BlockTransfer  Gray32  PolyPolyline  
BlueComponent  GreenComponent  PtInRect  
Color32  HSLtoRGB  RedComponent  
ColorAdd  InflateRect  RGBtoHSL  
ColorMax  Intensity  SetAlpha  
ColorMin  IntensityToAlpha  SetBorderTransparent  
ColorModulate  IntersectRect  SetGamma  
ColorSub  Invert  StretchTransfer  
ColorToGrayScale  InvertRGB  Transform  
Combine  IsRectEmpty  WinColor  

Types
Arrays  TFloatMatrix  TRBHandles  
Color Types  TLUT8  TRBStyle  
Point Types  TPaintBoxOptions  TRectRounding  
Rectangle Types  TPaintStage  TSize  
TConversionType  TPixelCombineEvent  TSizeGripStyle  
TDrawMode  TPolyFillMode  TStretchFilter  
TFixed  TRBBackgnd  

Variables
MMX_ACTIVE  

Constants
Color Constants  IdentityMatrix  Paint Stage Constants  
G32Version  Layer Options Bits  

Units
GR32  GR32_Filters  GR32_Polygons  
GR32_Blend  GR32_Image  GR32_RangeBars  
GR32_ByteMaps  GR32_Layers  GR32_Transforms  



Graphics32_1_7_1.zip


Posted by SB패밀리

델파이/Delphi VCL 컴포넌트 


Graphics32 v1.8.1 for D5,6,7,2005, C5,6, BDS2006





http://sf.net/projects/graphics32http://graphics32.org/wiki/
Graphics32 is a set of functions, classes, components and controls designed for high-performance graphics programming.

Being highly specialized for 32-bit pixel format, it provides fast operations with pixels and graphic primitives and in most cases Graphics32 considerably outperforms standard TBitmap/TCanvas classes.

The library comes with a full source code, documentation and examples. 



Installation
Graphics32 supports Delphi versions 5, 6, 7, 2005 (Win32), 2006 (Delphi Win32 and C++), and C++ Builder 5 and 6.

As of version 1.6 there is also CLX support in Graphics32. That means you can use it either with CLX on Windows using Delphi or on x86 Linux using the Kylix Delphi environment.



Note: If you want to use the Windows CLX version in Delphi, you'll have to uncomment the {$DEFINE CLX} line in GR32.inc.

Note: For Delphi 2005 and up function inlining is automatically used to improve performance in certain situations. If you want to avoid this, please comment out the {$DEFINE USEINLINING} line in GR32.inc.

Note: Because some properties of range bars and gage bars have been changed, you can obtain some error messages while opening your previous Graphics32 projects. Just ignore these messages and Delphi will fix DFM files automatically.



Unzip the files; 
Add location of main installation directory to Tools | Environment Options | Library | Library Path. 
Select File | Open... on the menu bar. Set Files of type to Delphi package source, locate and open GR32_DSGN_D6.dpk
(GR32_DSGN_K for Kylix, GR32_DSGN_BDS2006 for Borland Developer Studio 2006, GR32_DSGN_D2005 for Delphi 2005, GR32_DSGN_D7 for Delphi7, GR32_DSGN_D6 for Delphi6, GR32_DSGN_D5 for Delphi5 or GR32_DSGN_B5 for C++ Builder); 
A package editor window will appear. Click Compile, then click Install; 
If compiler asks whether you want to save changes, usually it is a good idea to choose No. 



graphics32_1_8_1.zip


Posted by SB패밀리

ASP용 이미지 리사이즈 프로그램 DLL과 소스프로그램





이미지사이즈.zip


Posted by SB패밀리
페이지 이동시 심심함을 달래줄... 페이지 불러오기 진행상태 표시..


한 페이지내에 DIV 태그가 위치한곳에 조그맣게 다른페이지를 보여주는 처리를 하는데있어
다른페이지가 Loading 될동안 모래시계와 같은 Progress 상태를 표시해 주기 위한 방법입니다.

 

 

1. 메인 페이지내에 페이지보여주는 DIV, Loading 이미지 보여줄 DIV 태그 추가 및 DIV 초기화 function 호출구문 추가(페이지 Load시 setShowLayer 명시적으로 호출구문 추가)

<form id=form1 runat=server>
 <!-- ================= [ DIV 정보 보기 및 수정 ] =========================================== -->

<div id="editInfo" style="Z-INDEX: 100; VISIBILITY: visible; POSITION: absolute; border-right:solid d4d4d4 1px; border-left:solid d4d4d4 1px; border-top:solid d4d4d4 1px; border-bottom:solid d4d4d4 1px; TOP:5px">
        <iframe id="iframEdit" scrolling=no width="500" height="270"  frameborder=0  class=""></iframe>  // IFrame의 Width값은 Loading 이미지표시 DIV 와 페이지표시 DIV 의 위치값을 구할때 사용될것이다. Height 값은 화면 보여질 페이지의 Height 값.

</div>

<!-- ================= [ RODING  이미지        ] =========================================== --> 

<div id="Loading" style="Z-INDEX: 110; VISIBILITY: visible; POSITION: absolute; TOP: 150px">
        <table>
            <tr>
                <td><img src="../images/commons/ajax-loader2-eastlink.gif" border="0" /></td>
            </tr>
        </table>

</div>       

<script language="javascript">setShowLayer("hidden", "editInfo", "Loading", 183, 500);</script>

.. 생략 ..

 

2. DIV 초기화 function 추가

<script language="javascript" type="text/javascript">

// *****************************************************
// 내용 : 레이어 Visible(활성/비활성) 시작, 2Depth 페이지 전용
// 작성일자 : 2007.11.30
// 작성자 : 한재준
// visible : 화면표시 여부 (Hidden, Show)
// pageDiv : .aspx 페이지를 보여줄 Div Name (IFrame을 가진 Div)
// loadingDiv : Loading 이미지를 보여줄 Div Name
// leftMenuWidth : Left메뉴 Width (Left메뉴 Width 값을 빼야지만 Sub Page(Left 메뉴의 우측에 보여지는 페이지)의 중간값을 구할수있다.)
// iFrameWidth : IFrame의 Width
// ***************************************************** 
function setShowLayer(visible, pageDiv, loadingDiv, leftMenuWidth, iFrameWidth)
{
 var objIFrameDiv = document.all[pageDiv];
 var objLoadingDiv = document.all[loadingDiv];

 if(visible == "show")
 {
  objIFrameDiv.style.visibility = "visible";
  objLoadingDiv.style.visibility = "visible";

        var screenX = screen.Width/2;   // 전체화면 절반
       
        var iFrameX = iFrameWidth/2;  
// IFrame 절반
        var tempX = screenX - iFrameX;
        objIFrameDiv.style.left = tempX - leftMenuWidth;
// Left메뉴의 Width를 빼준다. 빼주는 이유는 Left메뉴의 우측끝이 Div 태그가 포함된 페이지의 시작이기 때문이다 (Left 메뉴없을시에는 leftMenuWidth 빼기 않함)
  
  var loadingX = 48/2; // Loading 이미지 절반 (Loading 이미지의 Width는 48px 입니다)
  tempX = screenX - loadingX;
  objLoadingDiv.style.left = tempX - leftMenuWidth;
// Left메뉴의 Width를 빼준다. 빼주는 이유는 Left메뉴의 우측끝이 Div 태그가 포함된 페이지의 시작이기 때문이다 (Left 메뉴없을시에는 leftMenuWidth 빼기 않함)
 }else
 {     
  objIFrameDiv.style.visibility = "hidden";
  objLoadingDiv.style.visibility = "hidden";
 }  
}

 

// Div 태그내 IFrame 페이지 보여주기

// HTML 컨트롤의 onclick 이벤트 발생시 호출되는 함수 입니다.

function ShowDiv()

{
            var avs_URL = "test.aspx" ;

            setShowLayer("show", "editInfo", "Loading", 183, 500);

            document.all.iframEdit.src = avs_URL;

}

</script>

 

 

3. DIV 태그를 가진 페이지의 HTML 버튼 컨트롤에 onclick 이벤트를 추가한다.

onclick="ShowDiv();"

 

 

4. DIV 내의 IFrame으로 호출될 페이지의 HTML 소스의 마지막 부분에 부모페이지에있는 Loading 이미지를가진 Div태그 숨김처리 script 함수 추가

.. 생략 ..

  </form>
 </body>
</HTML>
<script language="javascript">
// IFrame으로 호출된 현재 페이지는 Loading 다된후 화면상에 표시되고 IFrame을 가진 부모폼의 loading이미지를 가진 Div 닫기(2,3 번째 인자값으로 Loading Div ID 넘겨주기, Loading Div 태그만 넘겨줘서 IFrame을 가진 Div는 화면상에 보여지게하고 Loading Div만 숨겨준다.), 부모의 자바스크립트 함수를 호출하는 문법에 주의해야 한다. (parent.iframEdit.parent.함수명)
parent.iframEdit.parent.setShowLayer("hidden", "Loading", "Loading", 0, 0);
</script>

 

위와같은 방식으로 페이지내에 Div와 IFrame을 이용해 다른페이지가 Loading 되는동안 Progress 상태표시를 구현해 보았습니다.

아직 공통모듈화 시키기 전이라 사용하는데 제한적인 부분이 많지만 개인적으로 초급개발자 입장에서 궁금했었던 Tip 이었습니다.

다른페이지가 Loading 되는동안 Progress 상태표시를 해주고싶으신 분들은 이런방법도 있으니 참고하셔도 될거 같습니다.

 

작성자 : 한재준

Posted by SB패밀리