BLOG ARTICLE 전체 글 | 126 ARTICLE FOUND

  1. 2017.03.06 윈도우서버 부팅/종료/재시작 이벤트 추적
  2. 2016.05.30 브라우저별 Adobe Flash Player Plug-in 설정
  3. 2016.02.18 [Flex] 카메라이야기 5. Android앱에서 Native Camera 회전버그 4
  4. 2016.01.28 [FlexExample] List ScrollBar 커스텀 스킨
  5. 2016.01.25 [Wowza] CentOS 7.2에서 서비스 실행에러
  6. 2015.07.10 [작성중] 화상솔루션에서의 지연시간 측정
  7. 2015.06.15 [링크] 해킨토시 설치법
  8. 2015.06.12 Linux 서버 시간 바꾸기
  9. 2015.06.12 콘솔창에서 Tomcat 로그보기
  10. 2015.06.12 [Wowza] Wowza 업데이트
  11. 2015.05.21 [FlexExample] 스킨제작연습2 - 동그라미버튼
  12. 2015.05.21 [FlexExample] 스킨제작연습1 - 영역나누기
  13. 2015.04.28 [작성중][Media] 22. 동영상 서비스 - Wowza StreamLock Addon
  14. 2015.04.09 [작성중][Media] 12. 동영상 서비스 - 대역폭 계산과 트래픽 예상하기
  15. 2015.03.20 [FlexExmaple] as3에서 replaceAll()함수 구현
  16. 2015.02.02 [JavaCore] 파일복사 및 이동
  17. 2015.01.16 [Wowza] Wowza IDE 4.0 컴파일 에러시
  18. 2014.12.28 [FlexMobile] 메뉴 예제
  19. 2014.12.24 [FlexMobile] Flex Mobile 자습서 PDF 링크
  20. 2014.12.19 로지텍 키보드 윈도우키 안먹히는 문제
  21. 2014.12.02 [Flex] FlashBuilder에서 Profiling이 안되는 경우
  22. 2014.11.28 [Socket.IO] transports 타입 알아내기
  23. 2014.11.23 [node.js] 클라이언트에 유니크한 ID값을 부여하는 모듈 uuid
  24. 2014.11.10 [HTML5] HTML5 링크모음
  25. 2014.11.10 [Socket.IO] Socket.IO 링크모음
  26. 2014.11.07 [Socket.IO] nodeclipse 사용시 io.sockets.in(room) 에서 Syntax error
  27. 2014.11.07 [node.js] express로 웹서버 만들기
  28. 2014.11.07 [node.js] 웹서버 생성하기
  29. 2014.11.06 [Flex] Flash, Flex에서의 H.264 비디오와 AAC 오디오
  30. 2014.11.05 [FlexMobile] ActionBar


- 로컬 컴퓨터에 시스템 종료 이번트 추적기 구성

- Windows Server restart / shutdown history

'ETC' 카테고리의 다른 글

[링크] 해킨토시 설치법  (0) 2015.06.15
로지텍 키보드 윈도우키 안먹히는 문제  (0) 2014.12.19
버전관리툴(CVS, SVN, GIT)의 비교  (2) 2012.11.05
AND



1. IE


① 오른쪽 상단의 도구 아이콘 클릭 (단축키 : Alt + x)

② 추가 기능 관리



③ Shockwave Flash Object 항목의 상태값 확인. '사용 안 함' 으로 되어있는 경우 우측하단 '사용 함' 버튼 클릭

   ('사용 함' 클릭이 비활성화 되어있을 경우, 관리자 계정 권한이 필요 함)





2. 크롬


① 주소창에 chrome://plugins 입력



② 'Adobe Flash Player' 항목을 Enable



AND



FlexMobile에서 Camera를 불러오면 90도로 회전이 되어서 나와버립니다. 해결방법은 rotate를 사용하여 회전시켜버리면 됩니다. 다만 저같은 경우는 카메라영상을 미디어서버로 스트리밍을 해야됐는데, 스트리밍데이터 자체는 rotate가 먹질않으니, Player단에서도 회전을 시켜야 하는 번거로움이 있습니다. Adobe의 BugReport에 올라간지도 몇년이 되었지만 대답을 내놓고 있지않고, Apache또한 업데이트를 안해주고 있으니 개발하는 입장에서 미칠 노릇입니다. 또한 AutoFocus기능버그와 영상을 Display하는 속도 또한 Native에 비해 많이 떨어집니다. ANE로 구동시켜보려 했지만 실패... 혹시 성공하신분 정보공유 부탁드립니다! (__) 그리고 미디어 관련된 모바일프로젝트를 Flex로 하신다면 두손두발 다들고 말리고 싶습니다. ㅠㅠ


ORIENTATION AND DEVICEORIENTATION IN FLEX MOBILE APPS

Using screen orientation APIs for smartphone application development

as3에서 Matrix 적용방법

- 지돌스타님의 글 : [Flex,AIR,ActionScript 3.0]Matrix를 이용해 이동,스케일링,회전,거울효과 적용

- Adobe Forum : StageOrientationEvent.ORIENTATION_CHANGE not Dispatching

- Flash Flex Rotate Around a Point by Matrix

- Android camera rotate

AND


ListAndScrollBar.fxp




[출처] FLEX SPARK LIST WITH CUSTOM SCROLL BAR AND ITEMRENDERER

AND


원인은 CentOS가 7.2로 업데이트 되면서 systemd 가 이동이 되었다고 합니다. 

Wowza에서 제공하는 간단한 스크립작성으로 해결가능하고, 추후 업데이트 해준다고 합니다.


Ubuntu 15.04 install: Service fails to start with vague error message

Important issues that affect Wowza Streaming Engine software

AND

PROTECTED ARTICLE. TYPE THE PASSWORD.


- Yosemite 10.10.1 on VMWare Workstation 11 for Windows

- 6. Mac OCX 기본 사용법

AND


rm /etc/localtime

ln -s /usr/share/zoneinfo/GMT /etc/localtime

date MMDDHHmmYYYY

hwclock --systhhc

- How to set the Time/Date and Timezone in CentOS

'Linux' 카테고리의 다른 글

콘솔창에서 Tomcat 로그보기  (0) 2015.06.12
AND


tail -f /usr/local/tomcat/logs/catalina.out



'Linux' 카테고리의 다른 글

Linux 서버 시간 바꾸기  (0) 2015.06.12
AND






Wowza 서버 버전 업데이트 할 때 마다, 그냥 새 버전을 받아 재설치 했지만, 본격 서비스가 시작되면서 무식한(?) 방법은 더이상 용납이 되지 않아 업데이트 하는 방법을 메모해 둡니다. 


업데이트 파일은 Wowz홈페이지 계정 로그인 후에 다운로드 가능하며, 다운받은 ZIP파일을 [install-dir]/updates/ 상위 디렉토리에 버전이름의 디렉토리를 하나 만들고 [install-dir]/updates/[update-dir]/ 압축을 풀고 설치를 하면 됩니다. 


해당 ZIP파일을 절대로 지우지 마세요. 업데이트 후 문제가 생길경우 버전롤백 할 때 ZIP파일이 사용됩니다.


sudo su -

cd /home/wowza/updates

mkdir WowzaStreamingEngine-Update-4.0.3

cd WowzaStreamingEngine-Update-4.0.3

wget http://www.wowza.com/downloads/Wowza...date-4.0.3.zip

unzip WowzaStreamingEngine-Update-4.0.3.zip

service WowzaStreamingEngine stop

service WowzaStreamingEngineManager stop

cd linux

chmod +x update.sh

./update.sh

service WowzaStreamingEngine start

service WowzaStreamingEngineManager start


- How to update your Wowza Streaming Engine installation

- Problem updating from 4.0.1 to 4.0.3

AND




<?xml version="1.0" encoding="utf-8"?>

<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"

                       xmlns:s="library://ns.adobe.com/flex/spark"

                       xmlns:mx="library://ns.adobe.com/flex/mx"

                       xmlns="*">

       <MyButton label="동그라미버튼" width="200" height="200"/>

</s:Application> 



<?xml version="1.0" encoding="utf-8"?>

<s:Button xmlns:fx="http://ns.adobe.com/mxml/2009"

               xmlns:s="library://ns.adobe.com/flex/spark"

               xmlns:mx="library://ns.adobe.com/flex/mx"

                skinClass="MyButtonSkin">

</s:Button>

 



<?xml version="1.0" encoding="utf-8"?>

<s:SparkButtonSkin xmlns:fx="http://ns.adobe.com/mxml/2009"

                              xmlns:s="library://ns.adobe.com/flex/spark"

                              xmlns:fb="http://ns.adobe.com/flashbuilder/2009"

                              minWidth="21" minHeight="21"

                              alpha.disabled="0.5">

      

       <fx:Metadata>[HostComponent("MyButton")]</fx:Metadata>

      

       <!-- states -->

       <s:states>

             <s:State name="up" />

             <s:State name="over" />

             <s:State name="down" />

             <s:State name="disabled" />

       </s:states>

      

       <s:Ellipse id="fill" left="1" right="1" top="1" bottom="1">

             <s:fill>

                    <s:SolidColor color="0xAAAAAA"

                                          color.down="0xEEEEEE" />

             </s:fill>

       </s:Ellipse>

      

      

       <s:Ellipse id="border" left="0" right="0" top="0" bottom="0">

             <s:stroke>

                    <s:SolidColorStroke color="0x555555"

                                                     color.down="0x111111" />

             </s:stroke>

       </s:Ellipse>

      

       <s:Label id="labelDisplay"

                     textAlign="center"

                     maxDisplayedLines="1"

                     horizontalCenter="0" verticalCenter="1" verticalAlign="middle"

                     left="10" right="10" top="2" bottom="2">

       </s:Label>

      

</s:SparkButtonSkin> 


AND




<?xml version="1.0" encoding="utf-8"?>

<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"

                       xmlns:s="library://ns.adobe.com/flex/spark"

                       xmlns:mx="library://ns.adobe.com/flex/mx"

                       xmlns="*">

      

       <!-- 스킨기본이해 - 영역잡기 -->

       <MySkinableComponent width="100%" height="100%">

            

             <topContent>

                    <s:Label text="Top영역" horizontalCenter="0" verticalCenter="0"/>

             </topContent>

            

             <middleContent>

                    <s:Label text="Middle영역" horizontalCenter="0" verticalCenter="0"/>

             </middleContent>

            

             <bottomContent>

                    <s:Label text="Bottom영역" horizontalCenter="0" verticalCenter="0"/>

             </bottomContent>

            

       </MySkinableComponent>

</s:Application> 



<?xml version="1.0" encoding="utf-8"?>

<s:SkinnableContainer xmlns:fx="http://ns.adobe.com/mxml/2009"

                                   xmlns:s="library://ns.adobe.com/flex/spark"

                                   xmlns:mx="library://ns.adobe.com/flex/mx"

                                   skinClass="MySkinableComponentSkin">

 

       <fx:Script>

             <![CDATA[

                    import spark.components.Group;

                    /**

                     *  컨테이너  topGroup 정의

                     */

                    [SkinPart(required="false")]

                    public var topGroup:Group;

 

                    private var _topContent:Array=[];

 

                    /**

                     *  컨테이너 topContent mxml 리스트

                     */

                    [Bindable]

                    [ArrayElementType("mx.core.IVisualElement")]

                    public function get topContent():Array

                    {

                           return _topContent;

                    }

 

                    public function set topContent(value:Array):void

                    {

                           _topContent=value;

                           if (topContent)

                                 topContent.mxmlContent=value;

                    }

 

                    /**

                     *  컨테이너  middleGroup 정의

                     */

                    [SkinPart(required="false")]

                    public var middleGroup:Group;

 

                    private var _middleContent:Array=[];

 

                    /**

                     *  컨테이너 middleContent mxml 리스트

                     */

                    [Bindable]

                    [ArrayElementType("mx.core.IVisualElement")]

                    public function get middleContent():Array

                    {

                           return _middleContent;

                    }

 

                    public function set middleContent(value:Array):void

                    {

                           _middleContent=value;

                           if (middleContent)

                                 middleContent.mxmlContent=value;

                    }

 

                    /**

                     *  컨테이너  bottomGroup 정의

                     */

                    [SkinPart(required="false")]

                    public var bottomGroup:Group;

 

                    private var _bottomContent:Array=[];

 

                    /**

                     *  컨테이너 bottomContent mxml 리스트

                     */

                    [Bindable]

                    [ArrayElementType("mx.core.IVisualElement")]

                    public function get bottomContent():Array

                    {

                           return _bottomContent;

                    }

 

                    public function set bottomContent(value:Array):void

                    {

                           _bottomContent=value;

                           if (bottomContent)

                                 bottomContent.mxmlContent=value;

                    }

 

                    /**

                     *  override partAdded

                     */

                    override protected function partAdded(partName:String, instance:Object):void

                    {

                           super.partAdded(partName, instance);

 

                           switch (instance)

                           {

                                 case topGroup:

                                        topGroup.mxmlContent=_topContent;

                                        break;

                                 case middleGroup:

                                        middleGroup.mxmlContent=_middleContent;

                                        break;

                                 case bottomGroup:

                                        bottomGroup.mxmlContent=_bottomContent;

                                        break;

                           }

                    }

 

                    /**

                     *  override partAdded

                     */

                    override protected function partRemoved(partName:String, instance:Object):void

                    {

                           super.partRemoved(partName, instance);

 

                           switch (instance)

                           {

                                 case topGroup:

                                        topGroup.mxmlContent=null;

                                        break;

                                 case middleGroup:

                                        middleGroup.mxmlContent=null;

                                        break;

                                 case bottomGroup:

                                        bottomGroup.mxmlContent=null;

                                        break;

                           }

                    }

             ]]>

       </fx:Script>

 

</s:SkinnableContainer> 


<?xml version="1.0" encoding="utf-8"?>

<s:Skin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"

             xmlns:fb="http://ns.adobe.com/flashbuilder/2009" alpha.disabled="0.5">

      

       <fx:Metadata>

             <![CDATA[

             /**

             * @copy spark.skins.spark.ApplicationSkin#hostComponent

             */

             [HostComponent("spark.components.SkinnableContainer")]

             ]]>

       </fx:Metadata>

      

       <fx:Script fb:purpose="styling">

             <![CDATA[        

                    /**

                     *  @private

                     */

                    override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number) : void

                    {

                           if (isNaN(getStyle("backgroundColor")))

                           {

                                 background.visible = false;

                           }

                           else

                           {

                                 background.visible = true;

                                 bgFill.color = getStyle("backgroundColor");

                                 bgFill.alpha = getStyle("backgroundAlpha");

                           }

                          

                           super.updateDisplayList(unscaledWidth, unscaledHeight);

                    }

             ]]>       

       </fx:Script>

      

       <s:states>

             <s:State name="normal" />

             <s:State name="disabled" />

       </s:states>

      

       <!--- 레이어0 백그라운드칼라 -->

       <s:Rect id="background" left="0" right="0" top="0" bottom="0">

             <s:fill>

                    <!--- @private -->

                    <s:SolidColor id="bgFill" color="#FFFFFF"/>

             </s:fill>

       </s:Rect>

      

      

       <!--- 레이어2 영역설정 -->

       <s:VGroup width="100%" height="100%" gap="0">

             <!-- Top Group -->

             <s:Group width="100%" height="50">

                    <s:Rect width="100%" height="100%">

                           <s:fill>

                                 <s:SolidColor color="0x999999" />

                           </s:fill>

                    </s:Rect>                 

                    <s:Group id="topGroup" width="100%" height="100%" />

             </s:Group>

            

             <!-- Middle Group -->

             <s:Group width="100%" height="100%">

                    <s:Rect width="100%" height="100%">

                           <s:fill>

                                 <s:SolidColor color="0xCCCCCC" />

                           </s:fill>

                    </s:Rect>                 

                    <s:Group id="middleGroup" width="100%" height="100%" />

             </s:Group>

            

             <!-- Bottom Group -->

             <s:Group width="100%" height="50">

                    <s:Rect width="100%" height="100%">

                           <s:fill>

                                 <s:SolidColor color="0xEEEEEE" />

                           </s:fill>

                    </s:Rect>                 

                    <s:Group id="bottomGroup" width="100%" height="100%" />

             </s:Group>

       </s:VGroup>

      

       <s:Group id="contentGroup" left="0" right="0" top="0" bottom="0" minWidth="0" minHeight="0">

             <s:layout>

                    <s:BasicLayout/>

             </s:layout>

       </s:Group>

      

</s:Skin>

 


AND

PROTECTED ARTICLE. TYPE THE PASSWORD.

PROTECTED ARTICLE. TYPE THE PASSWORD.


 /**

  * @param1 원본

  * @param2 찾을문자

  * @param3 바꿀문자

  */

  private function replaceAll( source:String, find:String, replacement:String ):String

  {

         return source.replace(new RegExp(find, "g"), replacement);

  }

 



 /**

  * @param1 원본

  * @param2 찾을문자

  * @param3 바꿀문자

  */               

  private function replaceAll( source:String, find:String, replacement:String ):String

  {

         return source.split( find ).join( replacement );

  }


[출처] : Flex doesn't have a String#replaceAll()?

AND



InputStream, OutputStream으로 파일 이동하기

자바 파일복사 코드와 성능 2 :: Java File Copy Code & Perfomance Issue. part 2

AND



1. 증상




2. 해결

-Dcom.wowza.wms.native.base="win"




- How to use Wowza IDE with Wowza Transcoder Addon

AND


1. Menu 기본


FlexMobile_ViewMenu.fxp



[출처] Define menus in a mobile application


2. Style Menu


FlexMobile_StyledViewMenu.fxp



[출처] Using Menus in your Flex 4.5 Mobile Application

AND




Developing Mobile Applications with ADOBE®FLEX® and ADOBE®FLASH®BUILDER



AND


오른쪽위 로지텔로고를 먼저 누르고, 윈도우키 동시에 누름

'ETC' 카테고리의 다른 글

윈도우서버 부팅/종료/재시작 이벤트 추적  (0) 2017.03.06
[링크] 해킨토시 설치법  (0) 2015.06.15
버전관리툴(CVS, SVN, GIT)의 비교  (2) 2012.11.05
AND




Flex모바일 개발에 필수인 Profiling!  어느날 갑자기 그냥 아무이유없이 잘되던 빌더의 Profiler가 동작을 하지 않는다.  Profiling하면 메모리 0, 객체모니터링도 안되고...


아무리 구글링 해도 안나오고, 온갖 버전의 SDK설치 및 FlashBuilder 재설치, 바이러스 및 악성코드 검사, Profiling포트변경, 쓸때없는 프로그램 및 서비스 삭제, 빌더의 온갖 설정을 만지작만지작...


도무지 안된다. 포멧까지 생각하고 정신줄을 안드로메다로 보내려고 하는 中...


마지막 시도..... Windows의 사용자 계정을 새로 생성 후, 새 계정으로 로그인하고 Profiling하니 잘된다...


뭐지....


뭐지....


뭘까...


된다는 기쁨과 허무함... 만감이 교차한다...


다시 Profiling이 동작하지 않던 계정으로 로그인해서, {C:/사용자/} 의 내용들을(%APPDATA% 경로포함) 모두 삭제 후 Profiling하니 잘된다... 


원인을 찾아 "너 이새끼" 하고싶지만... 시간이 벌써 12시가 다 되었다.  업무가 바빠 그럴 시간도 없다.  빌더가 읽어들이는 설정파일에 문제가 있겠지... 하고 넘기자.


나의 황금같은 3시간을 돌려주오... 집에가자. 눈아프다.




AND


io.transports[socket.id].name -> socket.conn.transport.name

'node.js > socket.io' 카테고리의 다른 글

[Socket.IO] Socket.IO 링크모음  (0) 2014.11.10
AND


- Github : node-uuid

- How to Generate Unique Identifiers in Node.js

AND




- HTML5 강좌 : SQLER.com

'HTML > HTML News' 카테고리의 다른 글

Google Speech API, 그리고 음성인식 기술  (14) 2014.04.18
AND


* 채팅만들기

- [Node.js+MongoDB] 블로그, 채팅서비스 예제

- 빠르게 훝어보는 node.js (조대협님의 글) Socket.IO 1/4 socketio 기본 및 채팅 만들기 

- 빠르게 훝어보는 node.js (조대협님의 글) : Socket.IO 2/4 API 요약

- 빠르게 훝어보는 node.js (조대협님의 글) : Socket.IO 3/4 (1:1귓속말 구현)

- 빠르게 훝어보는 node.js (조대협님의 글) : Socket.IO 4/4 (채팅방 기능 추가하기

- 윤영식님의 글 : 싱글 Socket.io 공유하여 여러 Subdomain 멀티 Chat 서버 만들기

Developing a scalable real-time desktop or mobile application with Socket.IO, Redis and HAProxy

Socket.IO 학습 - 패킷을 절약하여 효율성 높이기

- Advanced chat using node.js and socket.io - Episode1

- Advanced chat using node.js and socket.io - Episode2


* Room개념잡기

- rooms과 namespacing의 차이점(stackoverflow) : socket.io rooms or namespacing?

- Github Reference : Rooms


- 머드초보님의 글 : socket.io에 redis를 이용해서 여러 서버에서 사용하기

- node.js and socket.io multiroom chat tutorial

- NHN Ajax UI4팀 심상민님의 글 : WebSocket과 Socket.io

'node.js > socket.io' 카테고리의 다른 글

[Socket.IO] transports 타입 알아내기  (0) 2014.11.28
AND




실행시에는 문제가 되지 않지만, IDE에서 에러가 나는경우는 프로젝트폴더의 .project파일에 <nature>org.eclipse.wst.jsdt.core.jsNature</nature> 부분을 삭제하시면 됩니다. 



-JsHint throwing error regarding “Identifier expected after token”

AND



express모듈 설치명령

npm install express


var express = require('express')

  , http = require('http')

  , app = express()

  , server = http.createServer(app);

 

app.get('/', function (req, res) {

  res.send('Hello Express!');

});

 

app.get('/world.html', function (req, res) {

  res.send('Hello World Page');

});

 

server.listen(8000, function() {

  console.log('Express server listening on port ' + server.address().port);

}); 


AND




var http = require('http');       // 모듈추출

 

/**

 * req(요청), res(응답)하는 서버생성

 */

var server = http.createServer(function (req, res) {

  res.writeHead(200, { 'Content-Type' : 'text/plain' }); // 헤더정의

  res.write('Hello World');                              // res(응답) 'Hello World' 문자열 출력

  res.end();                                             // end()를 하지않으면 Client는 계속 응답함.

});

 

server.listen(8000);       // 8000번 포트로 서버시작


간추리면...


var http = require('http');       // 모듈추출

 

/**

 * req(요청), res(응답)하는 서버생성

 */

var server = http.createServer(function (req, res) {

  res.writeHead(200, { 'Content-Type' : 'text/plain' }); // 헤더정의

  res.end('Hello World');                                // end()를 하지않으면 Client는 계속 응답함.

}).listen(8000);    // 8000번 포트로 서버시작


주소창에 http://localhost:8000 접속.

AND




플래시플랫폼에서의 H.264코덱에 관련된 글입니다. 

Delivery: Streaming video

- Exploring Flash Player support for high-definition H.264 video and AAC audio

AND


 화면의 윗부분 영역을 "ActionBar" 라고 하며 크기 3가지(NavigationContent영역, TitleContent영역, ActionContent영역)로 나뉩니다. 그리고 actionBarVisible속성으로 감출수도 있습니다.



<?xml version="1.0" encoding="utf-8"?>

<s:View xmlns:fx="http://ns.adobe.com/mxml/2009"

               xmlns:s="library://ns.adobe.com/flex/spark"

               actionBarVisible="{chkBox.selected}"

               >

       

        <s:navigationContent>

               <s:Label text="navigationContent"/>

        </s:navigationContent>

       

        <s:titleContent>

               <s:Label text="titleContent"/>

        </s:titleContent>

       

        <s:actionContent>

               <s:Label text="actionContent"/>

        </s:actionContent>

       

        <s:HGroup width="100%" height="100%" verticalAlign="middle" horizontalAlign="center">

               <s:Label text="ActionBar Visible" />

               <s:CheckBox id="chkBox" selected="true"/>

        </s:HGroup>

</s:View>


AND