Size: px
Start display at page:

Download ""

Transcription

1 코드이그나이터의세계에오신것을환영합니다. 코드이그나이터 ( 이하 CI) 는 PHP 를이용하여웹사이트를구축하고자하는사람들을위한개발프레임워크입니다. CI 는날코딩하는분들을위해풍부한라이브러리, 쉬운인터페이스및쉬운로직을제공함으로써개발속도를무쟈게높혀드릴것입니다. CI 는님들이최소한의코딩만하도록하여프로젝트에집중할수있도록해드릴거예요. 코드이그나이터는누구를위한것인가? 코드이그나이터는바로이런여러분모두의것입니다 : 최소노력으로사용할수있는프레임워크를원한다. 놀라운프로그램성능을원한다. 다양한호스팅환경, 다양한 PHP 버전에서사용가능한호환성을원한다. 거의설정이필요없는프레임워크를원한다. 커맨드라인에서뭔가를입력할필요가없는프레임워크를원한다. 제한적인코딩규칙이없는프레임워크를원한다. PEAR 같이큰라이브러리를별로좋아하지않는다. 템플릿언어를억지로배우고싶지않다. 복잡한것대신심플한솔루션을좋아한다. 명확하고전체내용을몽땅다설명해주는설명서를원한다. 서버요구사항 Server Requirements PHP version 이상. 통상웹개발에는데이터베이스가요구됩니다. 현재지원되는데이터베이스는다음과같습니다. MySQL (4.1+), MySQLi, MS SQL, Postgres, Oracle, SQLite, and ODBC. CodeIgniter 라이센스 Copyright (c) , EllisLab, Inc. All rights reserved. 본라이센스는 CodeIgniter 를사용하기위해당신과앨리스랩이맺는법적인합의사항입니다. 당신은 CodeIgniter 를사용하기위하여아래사항에대해반드시동의하셔야합니다.

2 사용허가 Permitted Use 아래조건에만맞다면, 본소프트웨어및문서를사용, 복사, 수정, 배포를자유롭게하실수있습니다 : 1. 배포시본라이센스동의서가반드시포함되어야합니다. 2. 소스코드의재배포시위 copyright 표시가모든소스코드파일에포함되어있어야합니다.( 기존에있으므로유지하는개념 ) 3. 바이너리형태로재배포시위 copyright 표시가문서내에서나혹은배포시함께포함되는어떤것속에포함되어야합니다. 4. 파일을변경할때는변경내역과변경한사람을반드시명기해야합니다. 5. 본소프트웨어로부터만들어진제품은반드시 CodeIgniter 로부터만들어졌다는것을문서나다른어떤것에그사실을명기해야합니다. 6. 본소프트웨어로부터만들어진제품의이름에 EllisLab, Inc 의허가없이 "CodeIgniter" 를포함시켜서는안됩니다. 면책 Indemnity 여러분은어떠한직, 간접적, 우발적, 결과적써드파티변상요구, 행동혹은소송, 관련비용, 책임, 손해, 증여, 본소프트웨어의정확한사용및부정확한사용혹은라이센스위반으로부터발생하는비용등으로부터본소프트웨어를개발하거나기여한사람이피해를보지않고면책되는것에동의해야합니다. 보증포기 Disclaimer of Warranty 본소프트웨어는표현되거나, 내포되거나, 포함되거나, 제한되거나, 품질을보증하거나, 성능을보증하거나, 특허침해가없음을보증하거나, 판매를보증하거나, 특정목적에적합함을보증하거나하는것중어떤보증도포함하지않는제품그대로 (AS IS) 배포되었습니다. 책임한계 Limitations of Liability 여러분이본소프트웨어를설치하고사용하는데따르는모든위험에대한책임을져야합니다. 본소프트웨어와관련된배상요구, 피해, 책임등에대해서소프트웨어저자및저작권자는어떠한경우에도책임지지않습니다. 저작권자는단지사용권에대한결정에만책임이있으며, 그사용에관련되는프로그램에러, 장비손상, 데이터나프로그램손실, 운영불능및운영장애등의위험이있다는것을가정하고있습니다. 명예 Credits CodeIgniter 는 Rick Ellis (Ellislab, Inc. 의 CEO ) 에의해최초로개발되었습니다. 본프레임워크는 ExpressionEngine 의기반코드에서많은것을빌려와여러가지클래스라이브러리, 헬퍼, 하위시스템등을구성하였으며, 실재상황에서최상의성능을내기위해만들어졌습니다. 현재는개발및유지보수를 ExpressionEngine 개발팀이맡고있습니다. Ruby on Rails 의걸출한업적이우리에게 PHP 프레임워크를만들도록영감을주었으며, 웹커뮤니티에게프레임워크가일반적이라는인식을가질수있도록해주었습니다. 설치절차 Installation Instructions CodeIgniter 설치는다음 4 단계를거칩니다 : 1. 다운받은파일의압축을푼다.

3 2. CodeIgniter 를서버에업로드한다. 일반적으로 index.php 을홈페이지루트에오도록해야한다. 3. application/config/config.php 파일을열어기반 url(base URL) 을세팅한다. 암호화나세션을사용하려면암호키 (encryption key) 를설정한다. 4. 데이터베이스를사용한다면 application/config/database.php 파일을열어서데이터베이스정보를세팅한다. system 폴더의이름을변경하여보안을강화할수있습니다. 만약변경한다면반드시메인 index.php 파일을열어맨위에있는 $system_folder 변수를새로운이름으로바꾸어줘야합니다. 끝! CodeIgniter 를처음시작하신다면시작하기부분을먼저읽어보시길권합니다. 그럼지금부터신나는프로그램을즐겨주세요! Upgrading from 1.2 to 1.3 Note: The instructions on this page assume you are running version 1.2. If you have not upgraded to that version please do so first. Before performing an update you should take your site offline by replacing the index.php file with a static one. Step 1: Update your CodeIgniter files Replace the following directories in your "system" folder with the new versions: Note: If you have any custom developed files in these folders please make copies of them first. application/models/ (new for 1.3) codeigniter (new for 1.3) drivers helpers init language libraries plugins scaffolding Step 2: Update your error files Version 1.3 contains two new error templates located in application/errors, and for naming consistency the other error templates have been renamed. If you have not customized any of the error templates simply replace this folder: application/errors/ If you have customized your error templates, rename them as follows: 404.php = error_404.php error.php = error_general.php error_db.php (new) error_php.php (new)

4 Step 3: Update your index.php file Please open your main index.php file (located at your root). At the very bottom of the file, change this: require_once BASEPATH.'libraries/Front_controller'.EXT; To this: require_once BASEPATH.'codeigniter/CodeIgniter'.EXT; Step 4: Update your config.php file Open your application/config/config.php file and add these new items: /* URL suffix This option allows you to add a suffix to all URLs. For example, if a URL is this: example.com/index.php/products/view/shoes You can optionally add a suffix, like ".html", making the page appear to be of a certain type: example.com/index.php/products/view/shoes.html */ $config['url_suffix'] = ""; /* Enable Query Strings By default CodeIgniter uses search-engine and human-friendly segment based URLs: example.com/who/what/where/ You can optionally enable standard query string based URLs: example.com?who=me&what=something&where=here Options are: TRUE or FALSE (boolean) The two other items let you set the query string "words" that will invoke your controllers and functions: example.com/index.php?c=controller&m=function */ $config['enable_query_strings'] = FALSE; $config['controller_trigger'] = 'c'; $config['function_trigger'] = 'm'; Step 5: Update your database.php file Open your application/config/database.php file and add these new items:

5 $db['default']['dbprefix'] = ""; $db['default']['active_r'] = TRUE; Step 6: Update your user guide Please also replace your local copy of the user guide with the new version. Upgrading from to Note: The instructions on this page assume you are running version If you have not upgraded to that version please do so first. Before performing an update you should take your site offline by replacing the index.php file with a static one. Step 1: Update your CodeIgniter files Replace the following directories in your "system" folder with the new versions: Note: If you have any custom developed files in these folders please make copies of them first. codeigniter drivers helpers init libraries Step 2: Update your Models If you are NOT using CodeIgniter's Models feature disregard this step. As of version 1.3.3, CodeIgniter does not connect automatically to your database when a model is loaded. This allows you greater flexibility in determining which databases you would like used with your models. If your application is not connecting to your database prior to a model being loaded you will have to update your code. There are several options for connecting, as described here. Step 3: Update your user guide Please also replace your local copy of the user guide with the new version. Upgrading from to Note: The instructions on this page assume you are running version If you have not upgraded to that version please do so first. Before performing an update you should take your site offline by replacing the index.php file with a static one. Step 1: Update your CodeIgniter files

6 Replace these files and directories in your "system" folder with the new versions: application/config/user_agents.php (new file for 1.5) application/config/smileys.php (new file for 1.5) codeigniter/ database/ (new folder for 1.5. Replaces the "drivers" folder) helpers/ language/ libraries/ scaffolding/ Note: If you have any custom developed files in these folders please make copies of them first. Step 2: Update your database.php file Open your application/config/database.php file and add these new items: $db['default']['cache_on'] = FALSE; $db['default']['cachedir'] = ''; Step 3: Update your config.php file Open your application/config/config.php file and ADD these new items: /* Class Extension Prefix This item allows you to set the filename/classname prefix when extending native libraries. For more information please see the user guide: */ $config['subclass_prefix'] = 'MY_'; /* Rewrite PHP Short Tags If your PHP installation does not have short tag support enabled CI can rewrite the tags on-the-fly, enabling you to utilize that syntax in your view files. Options are TRUE or FALSE (boolean) */ $config['rewrite_short_tags'] = FALSE; In that same file REMOVE this item: /* Enable/Disable Error Logging If you would like errors or debug messages logged set this variable to TRUE (boolean). Note: You must set the file permissions on the "logs" folder such that it is writable.

7 */ $config['log_errors'] = FALSE; Error logging is now disabled simply by setting the threshold to zero. Step 4: Update your main index.php file If you are running a stock index.php file simply replace your version with the new one. If your index.php file has internal modifications, please add your modifications to the new file and use it. Step 5: Update your user guide Please also replace your local copy of the user guide with the new version. Upgrading from to Before performing an update you should take your site offline by replacing the index.php file with a static one. Step 1: Update your CodeIgniter files Replace these files and directories in your "system" folder with the new versions: system/codeigniter system/database system/helpers system/language system/libraries Note: If you have any custom developed files in these folders please make copies of them first. Step 2: Remove header() from 404 error template If you are using header() in your 404 error template, such as the case with the default error_404.php template shown below, remove that line of code. <?php header("http/ Not Found");?> 404 status headers are now properly handled in the show_404() method itself. Step 2: Update your user guide Please replace your local copy of the user guide with the new version, including the image files. Upgrading from to Note: The instructions on this page assume you are running version If you have not upgraded to that version please do so first.

8 Before performing an update you should take your site offline by replacing the index.php file with a static one. Step 1: Update your CodeIgniter files Replace the following directories in your "system" folder with the new versions: Note: If you have any custom developed files in these folders please make copies of them first. codeigniter drivers helpers libraries Step 2: Update your config.php file Open your application/config/config.php file and add this new item: /* Output Compression Enables Gzip output compression for faster page loads. When enabled, the output class will test whether your server supports Gzip. Even if it does, however, not all browsers support compression so enable only if you are reasonably sure your visitors can handle it. VERY IMPORTANT: If you are getting a blank page when compression is enabled it means you are prematurely outputting something to your browser. It could even be a line of whitespace at the end of one of your scripts. For compression to work, nothing can be sent before the output buffer is called by the output class. Do not "echo" any values with compression enabled. */ $config['compress_output'] = FALSE; Step 3: Rename an Autoload Item Open the following file: application/config/autoload.php Find this array item: $autoload['core'] = array(); And rename it to this: $autoload['libraries'] = array(); This change was made to improve clarity since some users were not sure that their own libraries could be autoloaded. Step 4: Update your user guide Please also replace your local copy of the user guide with the new version.

9 문제해결 Troubleshooting 어떤 URL 을집어넣어도디폴트페이지만나온다면서버에서 PATH_INFO 변수를지원하지않은경우일가능성이큽니다. PATH_INFO 변수는검색엔진에색인되기좋은 URLs 을만드는데필요합니다. 이를해결하기위해서는먼저 application/config/config.php 파일을열어 URI Protocol 정보를살펴보세요. 대체할만한여러세팅을시도해보시길권장드립니다. 그래도정상동작하지않는다면 CodeIgniter 가? 를사용하도록설정해야합니다. application/config/config.php 을여신다음아래의부분을 $config['index_page'] = "index.php"; 아래와같이변경합니다 : $config['index_page'] = "index.php?"; Upgrading from to Before performing an update you should take your site offline by replacing the index.php file with a static one. Step 1: Update your CodeIgniter files Replace these files and directories in your "system" folder with the new versions: system/codeigniter system/database system/helpers system/language system/libraries Note: If you have any custom developed files in these folders please make copies of them first. Step 2: Encryption Key If you are using sessions, open up system/application/config/config.php and verify you've set an encryption key. Step 3: Constants File Copy /system/application/config/constants.php to your installation, and modify if necessary. Step 4: Mimes File Replace /system/application/config/mimes.php with the dowloaded version. If you've added custom mime types, you'll need to re-add them. Step 5: Update your user guide Please also replace your local copy of the user guide with the new version.

10 Upgrading from 1.3 to Note: The instructions on this page assume you are running version 1.3. If you have not upgraded to that version please do so first. Before performing an update you should take your site offline by replacing the index.php file with a static one. Step 1: Update your CodeIgniter files Replace the following directories in your "system" folder with the new versions: Note: If you have any custom developed files in these folders please make copies of them first. drivers init/init_unit_test.php (new for 1.3.1) language/ libraries scaffolding Step 2: Update your user guide Please also replace your local copy of the user guide with the new version. Upgrading from to Note: The instructions on this page assume you are running version If you have not upgraded to that version please do so first. Before performing an update you should take your site offline by replacing the index.php file with a static one. Step 1: Update your CodeIgniter files Replace the following directories in your "system" folder with the new versions: Note: If you have any custom developed files in these folders please make copies of them first. drivers init libraries Step 2: Update your user guide Please also replace your local copy of the user guide with the new version. Upgrading From Beta 1.0 to Final 1.2

11 To upgrade to Version 1.2 please replace the following directories with the new versions: Note: If you have any custom developed files in these folders please make copies of them first. drivers helpers init language libraries plugins scaffolding Please also replace your local copy of the user guide with the new version. 이전버전에서업그레이드하기 Upgrading From a Previous Version 나중에번역할래요 Please read the upgrade notes corresponding to the version you are upgrading from. Upgrading from to Upgrading from to Upgrading from to Upgrading from to Upgrading from to Upgrading from to Upgrading from to Upgrading from to Upgrading from to Upgrading from or to Upgrading from to Upgrading from to Upgrading from to Upgrading from to Upgrading from to Upgrading from 1.3 to Upgrading from 1.2 to 1.3 Upgrading from 1.1 to 1.2 Upgrading from Beta 1.0 to Beta 1.1 Upgrading from to Before performing an update you should take your site offline by replacing the index.php file with a static one. Step 1: Update your CodeIgniter files Replace these files and directories in your "system" folder with the new versions:

12 system/codeigniter system/database system/helpers system/language system/libraries Note: If you have any custom developed files in these folders please make copies of them first. Step 2: Update your Session Table If you are using the Session class in your application, AND if you are storing session data to a database, you must add a new column named user_data to your session table. Here is an example of what this column might look like for MySQL: user_data text NOT NULL To add this column you will run a query similar to this: ALTER TABLE `ci_sessions` ADD `user_data` text NOT NULL You'll find more information regarding the new Session functionality in the Session class page. Step 3: Update your Validation Syntax This is an optional, but recommended step, for people currently using the Validation class. CI 1.7 introduces a new Form Validation class, which deprecates the old Validation library. We have left the old one in place so that existing applications that use it will not break, but you are encouraged to migrate to the new version as soon as possible. Please read the user guide carefully as the new library works a little differently, and has several new features. Step 4: Update your user guide Please replace your local copy of the user guide with the new version, including the image files. Upgrading From Beta 1.0 to Beta 1.1 To upgrade to Beta 1.1 please perform the following steps: Step 1: Replace your index file Replace your main index.php file with the new index.php file. Note: If you have renamed your "system" folder you will need to edit this info in the new file. Step 2: Relocate your config folder This version of CodeIgniter now permits multiple sets of "applications" to all share a common set of backend files. In order to enable each application to have its own configuration values, the config directory must now reside inside of your application folder, so please move it there.

13 Step 3: Replace directories Replace the following directories with the new versions: drivers helpers init libraries scaffolding Step 4: Add the calendar language file There is a new language file corresponding to the new calendaring class which must be added to your language folder. Add the following item to your version: language/english/calendar_lang.php Step 5: Edit your config file The original application/config/config.php file has a typo in it Open the file and look for the items related to cookies: $conf['cookie_prefix'] = ""; $conf['cookie_domain'] = ""; $conf['cookie_path'] = "/"; Change the array name from $conf to $config, like this: $config['cookie_prefix'] = ""; $config['cookie_domain'] = ""; $config['cookie_path'] = "/"; Lastly, add the following new item to the config file (and edit the option if needed): /* URI PROTOCOL This item determines which server global should be used to retrieve the URI string. The default setting of "auto" works for most servers. If your links do not seem to work, try one of the other delicious flavors: 'auto' Default - auto detects 'path_info' Uses the PATH_INFO 'query_string' Uses the QUERY_STRING */ $config['uri_protocol'] = "auto"; Upgrading from to Note: The instructions on this page assume you are running version or If you have not upgraded to that version please do so first.

14 Before performing an update you should take your site offline by replacing the index.php file with a static one. Step 1: Update your CodeIgniter files Replace these files and directories in your "system" folder with the new versions: system/helpers/download_helper.php system/helpers/form_helper.php system/libraries/table.php system/libraries/user_agent.php system/libraries/exceptions.php system/libraries/input.php system/libraries/router.php system/libraries/loader.php system/libraries/image_lib.php system/language/english/unit_test_lang.php system/database/db_active_rec.php system/database/drivers/mysqli/mysqli_driver.php codeigniter/ Note: If you have any custom developed files in these folders please make copies of them first. Step 2: Update your user guide Please also replace your local copy of the user guide with the new version. Upgrading from to Before performing an update you should take your site offline by replacing the index.php file with a static one. Step 1: Update your CodeIgniter files Replace these files and directories in your "system" folder with the new versions: system/codeigniter system/database system/helpers system/language system/libraries Note: If you have any custom developed files in these folders please make copies of them first. Step 2: Update your user guide Please also replace your local copy of the user guide with the new version.

15 Upgrading from to Before performing an update you should take your site offline by replacing the index.php file with a static one. Step 1: Update your CodeIgniter files Replace these files and directories in your "system" folder with the new versions: system/codeigniter system/database system/helpers system/language system/libraries Note: If you have any custom developed files in these folders please make copies of them first. Step 2: Update your user guide Please replace your local copy of the user guide with the new version, including the image files. Upgrading from to Before performing an update you should take your site offline by replacing the index.php file with a static one. Step 1: Update your CodeIgniter files Replace these files and directories in your "system" folder with the new versions: system/application/config/mimes.php system/codeigniter system/database system/helpers system/libraries system/plugins Note: If you have any custom developed files in these folders please make copies of them first. Step 2: Add charset to your config.php Add the following to system/application/config/config.php /* Default Character Set This determines which character set is used by default in various methods that require a character set to be provided. */

16 $config['charset'] = "UTF-8"; Step 3: Autoloading language files If you want to autoload any language files, add this line to system/application/config/autoload.php $autoload['language'] = array(); Step 4: Update your user guide Please also replace your local copy of the user guide with the new version. Upgrading from to Note: The instructions on this page assume you are running version If you have not upgraded to that version please do so first. Before performing an update you should take your site offline by replacing the index.php file with a static one. Step 1: Update your CodeIgniter files Replace the following directories in your "system" folder with the new versions: Note: If you have any custom developed files in these folders please make copies of them first. application/config/hooks.php application/config/mimes.php codeigniter drivers helpers init language libraries scaffolding Step 2: Update your config.php file Open your application/config/config.php file and add these new items: /* Enable/Disable System Hooks If you would like to use the "hooks" feature you must enable it by setting this variable to TRUE (boolean). See the user guide for details. */ $config['enable_hooks'] = FALSE;

17 /* Allowed URL Characters This lets you specify which characters are permitted within your URLs. When someone tries to submit a URL with disallowed characters they will get a warning message. As a security measure you are STRONGLY encouraged to restrict URLs to as few characters as possible. By default only these are allowed: a-z 0-9~%.:_- Leave blank to allow all characters -- but only if you are insane. DO NOT CHANGE THIS UNLESS YOU FULLY UNDERSTAND THE REPERCUSSIONS!! */ $config['permitted_uri_chars'] = 'a-z 0-9~%.:_-'; Step 3: Update your user guide Please also replace your local copy of the user guide with the new version. CodeIgniter 다운로드하기 Downloading CodeIgniter CodeIgniter V ( 현재버젼 ) CodeIgniter V CodeIgniter V CodeIgniter V CodeIgniter V CodeIgniter V CodeIgniter V CodeIgniter V CodeIgniter V CodeIgniter V CodeIgniter V CodeIgniter V CodeIgniter V CodeIgniter V CodeIgniter V CodeIgniter V 1.3 CodeIgniter V 1.2 CodeIgniter V 1.1 CodeIgniter V 1.0 Subversion Server Subversion 은버전관리시스템입니다. 공개 subversion 서버에다음경로로엑세스할수있습니다. 최선을다하고있습니다만, subversion 에서받으신코드는안정성을보장할수없으므로주의하세요.

18 1.6.1 버전부터는아래경로를통해스냅샷 ( 태그 ) 도이용하실수있으니많은이용바랍니다. Upgrading from to Before performing an update you should take your site offline by replacing the index.php file with a static one. Step 1: Update your CodeIgniter files Replace these files and directories in your "system" folder with the new versions: system/codeigniter system/database system/helpers system/language system/libraries Note: If you have any custom developed files in these folders please make copies of them first. Step 2: Update your user guide Please also replace your local copy of the user guide with the new version. Upgrading from to Before performing an update you should take your site offline by replacing the index.php file with a static one. Step 1: Update your CodeIgniter files Replace these files and directories in your "system" folder with the new versions: system/codeigniter system/database system/helpers system/libraries system/plugins system/language Note: If you have any custom developed files in these folders please make copies of them first. Step 2: Add time_to_update to your config.php Add the following to system/application/config/config.php with the other session configuration options $config['sess_time_to_update'] = 300;

19 Step 3: Add $autoload['model'] Add the following to system/application/autoload.php /* Auto-load Model files Prototype: $autoload['model'] = array('my_model'); */ $autoload['model'] = array(); Step 4: Add to your database.php Make the following changes to your system/application/config/database.php file: Add the following variable above the database configuration options, with $active_group $active_record = TRUE; Remove the following from your database configuration options $db['default']['active_r'] = TRUE; Add the following to your database configuration options $db['default']['char_set'] = "utf8"; $db['default']['dbcollat'] = "utf8_general_ci"; Step 5: Update your user guide Please also replace your local copy of the user guide with the new version. CodeIgniter Overview The following pages describe the broad concepts behind CodeIgniter: CodeIgniter at a Glance Supported Features Application Flow Chart Introduction to the Model-View-Controller Design and Architectural Goals Package Description 설계의목적 Design and Architectural Goals CodeIgniter 는극한의성능, 적용성, 최소성, 유연성, 가벼움을목적으로설계되었습니다.

20 이목적을만족시키기위해서벤치마킹, 리펙토링, 단순화하기등을개발의전과정에서수행하였습니다. 그리고, 이목적에맞지않는것은단호히제거하였습니다. 기술적, 설계적관점에서 CodeIgniter 는다음의목표를따릅니다. 동적인작동 (Dynamic Instantiation). CodeIgniter 에서컴포넌트들은글로벌이아니라오직사용자가필요할때만로드되어사용됩니다. 어떤기능이필요할지미리짐작하지않으므로매우가벼운상태를기본으로하고있습니다. 님하가작성하신컨트롤러와뷰는 HTTP 요청이발생할때비로소무엇이호출될지를결정합니다. 느슨한결합 ( Loose Coupling). 결합 (Coupling) 이란어떤컴포넌트가어떤컴포넌트에의존하는가하는수준을말합니다. 적은컴포넌트의존은더욱유연하고재사용가능한시스템이되게합니다. 우리목표는대단히느슨하게결합된시스템입니다. 컴포넌트단일성 (Component Singularity). 단일성이란컴포넌트가얼마나목적에만집중하는가에대한수준을말합니다. CodeIgniter 에서는사용성을극대화하기위하여각클래스와함수가대단히그고유기능에집중되어만들어져있습니다. 위목표로인하여 CodeIgniter 는작은패키지이면서도단순성, 유연성, 고가용성을달성하기위해노력하고있습니다. 시작하기 Getting Started With CodeIgniter 어떤프로그램이라도배우기위해서는어느정도노력이필요합니다. 즐거운개발을위해우리는배울것을최소화하도록노력했습니다. 먼저 CodeIgniter 를설치하신후 CI 소개항목을읽어주세요. 다음으로일반토픽항목을순서대로읽어주세요. 각항목은이전항목을기반으로전개됩니다. 그리고포함되어있는코드샘플은따라해보시길권장합니다. 기본을이해하셨다면이제클래스레퍼런스와헬퍼레퍼런스를읽으실준비가되신겁니다. 위두가지레퍼런스에서어떻게라이브러리와헬퍼파일들을활용하실지알게되실겁니다. 문제나의문이있다면언제든지포럼이나위키에물어보시고또이전질답들도확인하세요. 모델뷰컨트롤러 Model-View-Controller CodeIgniter 는모델 - 뷰 - 컨트롤러 (MVC) 개발패턴에기반합니다. MVC 는프로그램의로직을프리젠테이션 ( 표현부분 ) 로부터분리하는소프트웨어접근방법론입니다. 실재로, 이것은여러분의웹페이지에최소한의스크립트만들어가도록해줍니다. Model 은데이터구조를표현합니다. 일반적으로모델클래스는데이터를추출, 입력, 갱신하는등의함수를포함하게됩니다. View 는사용자에게보여질부분을표현합니다. 뷰 (View) 는일반적으로웹페이지만,CodeIgniter 에서는뷰가헤더나푸터처럼웹페이지의조각일수도있습니다. 또한 RSS 페이지나, 혹은다른페이지형태의것일수있습니다. Controller 는일반적으로모델과뷰 ( 혹은 HTTP 요청을처리하여웹페이지를생성하는어떤것 ) 사이에서동작합니다. CodeIgniter 는모델이필요없도록 MVC 를매우느슨하게접근하였습니다. 만약모델을분리할필요가없거나, 모델을따로분리하는것이쓸데없이복잡도를증가시킨다면, 컨트롤러와뷰파일만으로프로그램을만드실수있습니다. CodeIgniter 는여러분이이미가지고있는스크립트를연동해서사용하거나, 여러분의기호에맞게시스템코어라이브러리를개발하여쓸수도있도록했습니다. 제공하는기능목록 ( 특징 )CodeIgniter Features 특징만으로는어플리케이션이얼마나쓰기좋고똑똑하게디자인되어있는지알지못합니다. 특징은코드의품질이나성능, 실용적보안등을판단하는데도별도움이못됩니다. 어플리케이션이좋은지어떤지알아보는유일한방법은써보는것입니다.

21 CodeIgniter를설치하는것은거의애들장난만큼쉽기때문에직접써보실것을권장드립니다. 모델-뷰-컨트롤러기반 PHP 4 에적합엄청가벼움여러플렛폼을지원하는완벽한데이터베이스클래스들액티브레코드 (Active Record Database) 지원폼과데이터의검증보안과 XSS 필터링세션관리 전송클래스. 첨부파일지원.HTML/Text 지원. 다양한프로토콜지원 (sendmail, SMTP, and Mail) 등. 이미지관리라이브러리 ( 자르기, 크기조절, 돌리기등 ).GD, ImageMagick, NetPBM 지원파일업로드클래스 FTP 클래스로컬라이즈 (Localization) 페이지네이션데이터암호화벤치마크전체페이지캐싱에러로깅성능측정 (Application Profiling) 스캐폴드 (Scaffolding) 캘린더클래스 User Agent 클래스 Zip 압축템플릿엔진트랙백 (Trackback) XML-RPC 라이브러리단위테스트검색엔진에색인되기좋은 URLs 유연한 URI 라우팅후킹, 클래스확장, 플러그인지원방대한헬퍼라이브러리 CodeIgniter 치트시트 라이브러리레퍼런스

22 헬퍼레퍼런스 CI 동작개념도 Application Flow Chart 아래그림은 CI 사용시데이터의흐름을보여줍니다 ( 화살표를따라가면서설명을읽어보세요 ): 1. The index.php 는프론트콘트롤러 (front controller) 로동작하여 CI 가동작하기위한기반리소스들을초기화합니다. 2. 라우터모듈 (Routing) 은 http 요청을분석하여어떤동작을해야할지를결정합니다. 3. 캐쉬파일이있다면그파일을바로브라우저로보내고일반적인동작절차는무시합니다. 4. 보안모듈 (Security) 은프로그램컨트롤러가로딩되기전에 HTTP 요청및어떤사용자전송데이터든지모두필터링합니다. 5. 컨트롤러 (Application controller) 는사용자요청을처리하기위해모델을로드하고, 코어라이브러리, 플러그인, 헬퍼및필요한다른리소스들을로드합니다. 6. 최종적으로뷰모듈 (View) 이렌더링되어브라우저로전송됩니다. 캐싱이활성화되어이다면먼저캐쉬 (Cashing) 하여다음번요청에사용할수있도록합니다. CodeIgniter 한눈에둘러보기 CodeIgniter at a Glance

23 CodeIgniter 는프레임워크입니다 CodeIgniter 는 PHP 를이용하여웹사이트를개발하고자하는사람들을위한도구모음입니다. 날코딩을하고계셨다면님하의개발속도를훨씬향상시켜줄것입니다. 이를위해 CI 는일반적작업에사용되는풍부한라이브러리를제공합니다. 게다가라이브러리사용은논리적이며쉬운인터페이스를제공합니다.CI 는최소코딩만필요하게하므로써님하의생산성을향상시켜주는데촛점이맞춰져있습니다. CodeIgniter 는무료입니다 CodeIgniter 는 Apache/BSD 스타일의오픈소스라이센스를채택하고있습니다. 더자세한정보는라이센스페이지를참고하세요. CodeIgniter 는 PHP 4 에서동작합니다 CodeIgniter 는 PHP4 에적합하도록작성되었습니다. PHP5 의장점을활용하고싶었지만, CI 를개발하던시점에서 PHP5 는많이보급되지않았고 RedHat 같은메이저밴더들도천천히 PHP5 로옮겨가기때문에 PHP5 가그리중요하지않다고느꼈습니다. CodeIgniter 는 PHP5 에서도동작합니다만, PHP5 의장점 ( 다중상속따위 ) 을활용하지는않습니다. CodeIgniter 는가볍습니다 엄청가볍습니다. 코어시스템은겨우몇개의작은라이브러리만사용합니다. 이점은다른수많은프레임워크들이엄청난리소스를요구하는것과뚜렷하게대조됩니다. 추가적인라이브러리는필요할때만동적으로로드하시면됩니다 CodeIgniter 는빠릅니다 겁나빠릅니다. CodeIgniter 보다빠른프레임워크를찾으신다면오백원드릴께요.( 미국으로비행기타고오삼 ) CodeIgniter 는 M-V-C 패턴에기반합니다 CodeIgniter 는모델 - 뷰 - 컨트롤러패턴을사용합니다. 비즈니스로직계층과표현계층이분리되어있으므로, 디자이너와같이일하실때템플릿파일에는최소한의프로그램코드만들어갈것입니다. CodeIgniter 는깔끔한 URL 을생성합니다 CodeIgniter 에서생성한 URL 은깔끔하고검색엔진에서색인되기좋은구조입니다. 일반적인쿼리스트링기반의 URL 이아니라세그먼트기반의 URL 을사용합니다. example.com/news/article/345 위의경우기본으로 index.php 가 URL 에포함되어있으나, 간단히.htaccess 파일을사용하여제거할수있습니다. CodeIgniter 는굉장히위력적입니다 CodeIgniter 는일반적인웹작업의대부분을커버하는라이브러리를제공합니다. 예를들어 database 접근, 전송, form 데이터검증 (validation), 세션관리, 이미지처리, XML-RPC 사용등을제공합니다

24 CodeIgniter 는확장가능합니다 플러그인이나헬퍼라이브러리를사용하여손쉽게확장할수있습니다. 혹은클래스확장이나시스템후킹을통해서도확장가능합니다. CodeIgniter 는템플릿엔진이필요없습니다 CodeIgniter 가심플한템플릿파서를포함하고있긴하지만, 반드시사용할필요는없습니다. 템플릿엔진은 PHP 문법과간단히매치되지않기때문에거의 PHP 를배우는만큼의학습노력이필요합니다. 아래코드를보시죠. <ul> <?php foreach ($addressbook as $name):?> <li><?=$name?></li> <?php endforeach;?> </ul> 아래는템플릿엔진을사용할경우입니다 <ul> foreach from=$addressbook item="name" <li>$name</li> /foreach </ul> 맞습니다맞구요. 템플릿엔진쪽이쬐금더깨끗해보이긴합니다. 그러나위코드는반드시재해석의과정을거쳐야하기때문에성능이떨어집니다. 우리의목표는최대의성능이기때문에템플릿엔진을사용하지않습니다. CodeIgniter 는완벽하게문서화되어있습니다 개발자는코드를사랑하지문서작성을사랑하진않습니다. 물론우리도별로다르지않습니다. 그렇지만, 문서도코드자체만큼중요하기때문에우리는문서를만들었답니다. 물론코드도깨끗할뿐아니라주석처리도잘되었구요. CodeIgniter 는친절한사용자커뮤니티가있습니다. 한국사용자포럼으로오세요 -->Community Forums. 포럼으로오세요 -->Community Forums. Creating Ancillary Classes In some cases you may want to develop classes that exist apart from your controllers but have the ability to utilize all of CodeIgniter's resources. This is easily possible as you'll see.

25 get_instance() Any class that you instantiate within your controller functions can access CodeIgniter's native resources simply by using the get_instance() function. This function returns the main CodeIgniter object. Normally, to call any of the available CodeIgniter functions requires you to use the $this construct: $this->load->helper('url'); $this->load->library('session'); $this->config->item('base_url'); etc. $this, however, only works within your controllers, your models, or your views. If you would like to use CodeIgniter's classes from within your own custom classes you can do so as follows: First, assign the CodeIgniter object to a variable: $CI =& get_instance(); Once you've assigned the object to a variable, you'll use that variable instead of $this: $CI =& get_instance(); $CI->load->helper('url'); $CI->load->library('session'); $CI->config->item('base_url'); etc. Note: You'll notice that the above get_instance() function is being passed by reference: $CI =& get_instance(); This is very important. Assigning by reference allows you to use the original CodeIgniter object rather than creating a copy of it. 보안 Security 본페이지에서는웹보안에대한실용적기법들 (best practices) 과 CodeIgniter 의보안항목에관한상세설명을제공합니다. URI 보안 CodeIgniter 는악의있는데이터가프로그램으로전달되는것을방지하기위하여 URI 에쓰는문자를상당히제한하기있습니다.URL 은아래사항들만포함해야합니다 : Alpha-numeric text( 알파벳과숫자 ) Tilde: ~ Period:. Colon: : Underscore( 밑줄 ): _ Dash: - GET, POST, 및 COOKIE 데이터

26 CodeIgniter 는기본적으로세그먼트기반의 URI 를사용하므로 GET data 는허용되지않습니다.( 만약여러분이 config 파일에서쿼리스트링 (query string) 옵션을활성화해놓았다면허용됩니다 ). 글로벌 GET 배열은시스템초기화과정에서해제 ( unset ) 됩니다. Register_globals 시스템초기화과정에서모든글로벌변수 (global variables) 들은해제 ( unset ) 됩니다. 단, $_POST 및 $_COOKIE 배열은예외입니다. 해제루틴은 register_globals = off 와동일한동작을합니다. magic_quotes_runtime magic_quotes_runtime 지시자는시스템초기화과정에서 off 되므로데이터베이스에서데이터를조회할때슬래쉬를제거할필요가없습니다.. 실용적기법들 Best Practices 서버로부터전달된데이터 ( 사용자가입력한 POST 데이터, COOKIE 데이터, URI 데이터, XML-RPC 데이터, SERVER 배열에있는데이터등 ) 들을처리하기전에아래의 3 단계를거치는것이좋습니다. 1. 오염된데이터를필터합니다 2. 올바른타입, 크기, 길이등의사항들을검증합니다. ( 이단계가 1 번단계를대신할때도있습니다.) 3. 데이터베이스에입력하기전에이스케이프 (Escape) 합니다. CodeIgniter 는이러한단계를지원하기위하여다음함수들을지원합니다 : XSS 필터링 CodeIgniter 는크로스사이트스크립팅 (Cross Site Scripting) 필터를제공합니다. 이필터는악의적인자바스크립트를데이터에포함하는것이라든지, 쿠키등을가로채려는것을찾아냅니다. XSS 필터는여기에상세한설명이있습니다. 데이터검증 CodeIgniter 는검증, 필터링, 데이터준비를위해서폼검증클래스를제공합니다. 데이터베이스입력전에이스케이프 (Escape) 하기 이스케이프없이데이터베이스에입력하지마시기바랍니다. 더자세한정보는데이터베이스의쿼리항목을살펴보세요. URI 라우팅규칙 Routing 일반적으로 URL 문자열과클래스 / 함수간에는 1 대 1 관계를이룹니다 URL 의세그먼트는통상다음의형태를따릅니다 : example.com/class/function/id/ 그러나어떤경우에는위와같은 1 대 1 매칭대신다른클래스나함수를호출하고자할때도있을것입니다. 예를들어여러분은아래와같은형식의 URL 을원한다고합시다 :

27 example.com/product/1/ example.com/product/2/ example.com/product/3/ example.com/product/4/ 일반적으로두번째새그먼트는함수이름이되어야하나, 위의예에서는함수이름대신제품 ID 입니다. 이렇게하려면 CodeIgniter 의재매핑 (remap) 기능을사용하시면됩니다. 나만의라우팅규칙설정하기 라우팅규칙은 application/config/routes.php 파일에정의되어있습니다. 해당파일을보시면 $route 배열이있는데그배열을통해여러분만의라우팅규칙을설정할수있습니다. 라우팅은와일드카드 (*) 나정규표현식으로도설정할수있습니다. 와일드카드 (*) 일반적인와일드카드라우팅은아래와같이설정합니다 : $route['product/:num'] = "catalog/product_lookup"; 라우팅설정에서배열의키는호출될 URI 를나타내며, 배열의값은매핑될도착지 ( 실제로사용자에게보여질 URI) 를나타냅니다. 위예제에서요청되는 URL 의첫번째새그먼트가 "product" 이고두번째새그먼트가숫자가됩니다. 이런 URL 요청이들어오면자동으로 catalog 클래스의 product_lookup 함수가호출됩니다. 라우팅에서사용할수있는와일드카드는아래와같이두가지 ( 숫자, 모든것 ) 입니다.: :num :any :num 오직숫자만매치시킴 :any 모든문자를매치시킴 Note: 라우팅설정은상위에설정된것이하위에설정된것보다우선실행됩니다. 예제 여기몇몇라우팅예제가있습니다 : $route['journals'] = "blogs"; URL 이첫번째새그먼트로 "journals" 을가지고있다면 "blogs" 클래스로재매핑됩니다. $route['blog/joe'] = "blogs/users/34"; URL 이 blog/joe 와같은새그먼트를포함하고있다면 "blogs" 클래스의 "users" 함수로재미핑되며 ID 값으로 "34" 가설정됩니다. $route['product/:any'] = "catalog/product_lookup"; URL 이첫새그먼트로 "product" 를포함하고있다면두번째새그먼트가어떤것이든간에 "catalog" 클래스의 "product_lookup" 함수로재매핑됩니다. $route['product/(:num)'] = "catalog/product_lookup_by_id/$1";

28 URL 이첫새그먼트로 "product" 를포함하고있다면두번째새그먼트가어떤것이든 "catalog" 클래스의 "product_lookup_by_id" 함수로연결되며두번째새그먼트는변수로서함수에전달돌것입니다. Important: Do not use leading/trailing slashes. 정규표현식 라우팅규칙을설정하는데정규표현식을사용하고싶다면가능합니다 어떤정규표현식도후위참조 (back-references) 로서사용가능합니다 Note: 후위참조 (back-references) 를사용하실때는이중백슬래쉬 (\\) 대신달러 ($) 를사용해야합니다.. 정규표현식경로설정은일반적으로다음의형태를가집니다 : $route['products/([a-z]+)/(\d+)'] = "$1/id_$2"; 위예제에서는, products/shirts/123 같은경로가 shirts 컨트롤러의 id_123 함수로매핑될것입니다. 또한, 와일드카드및정규표현식경로를섞어쓸수있습니다. 예약된라우팅경로 (Reserved Routes) 예약된경로는두가지가있습니다 : $route['default_controller'] = 'welcome'; 위라우팅경로는 URI 가아무런데이터도포함하지않았을때어떤컨트롤러가로드될지나타냅니다. 루트경로를호출했을경우가이에해당합니다. 위예제의경우 welcome 클래스가로드될것입니다. 항상기본라우팅경로를설정해둘것을권장합니다. 그렇지않으면 404 에러페이지를기본으로내보낼테니까요. $route['scaffolding_trigger'] = 'scaffolding'; 이경로는스케폴드를호출하기위해 secret word 를세팅하는경로입니다. 더자세한것은스케폴드페이지를참고하세요. Important: 예약된경로는어떤와일드카드, 정규표현식경로보다앞에와야합니다.. 플러그인 Plugins 플러그인은헬퍼와거의비슷하게동작합니다. 차이점이라면플러그인은통상하나의기능을제공하는반면헬퍼는여러기능들의모음이라는점이죠. 헬퍼는코어시스템의일부로인식됩니다. 플러그인은커뮤니티에서제작되고공유될의도로사용하죠. 플러그인은 system/plugins 폴더에저장하거나 application 폴더안에 plugins 폴더를만드셔서그안에저장하셔야합니다. CodeIgniter 는 system/application/plugins 폴더를먼저확인하며해당폴더가없거나요청한플러그인이없을때는 system/plugins 폴더를확인합니다. 플러그인로드하기 플러그인을로드하는것은다음과같이매우간단합니다 :

29 $this->load->plugin('name'); name 부분은.php 확장자와 "plugin" 문자열을제외한플러그인파일이름입니다. 예를들이 Captcha 플러그인의파일명이 captcha_pi.php 이라면다음과같이로드할수있습니다 : $this->load->plugin('captcha'); 플러그인은컨트롤러안의어떤함수에서도로드할수있으며, 뷰파일에서도로드할수있습니다. 물론뷰파일에서로드하는것은좋은방법이아니겠죠. 사용하기전에로드하는것이우선이라는거잊지마세요. 컨트롤러의생성자에서플러그인을로드한다면컨트롤러안의다른함수에서는별도의로드없이해당플러그인을바로사용할수있습니다. 물론, 해당플러그인이필요한함수내에서로드하고사용해도됩니다. Note: 플러그인을로드하는함수는리턴값이없습니다. 그러므로, 로드하는함수를어떤변수에할당하지마세요. 그냥위에예시된형태로사용하셔야합니다.. 여러플러그인로드하기 여러플러그인을로드해야한다면아래와같이배열을사용할수있습니다.: $this->load->plugin( array('plugin1', 'plugin2', 'plugin3') ); 플러그인자동로드 플러그인을전프로그램에걸쳐사용해야할경우자동로드하도록설정할수있습니다 application/config/autoload.php 파일의 autoload 배열에추가해주세요. 플러그인사용 플러그인을로드한후표준 PHP 함수처럼사용하시면됩니다. 나만의코어클래스만들기 Creating Core System Classes CodeIgniter 를사용할때마다자동으로초기화되어코어프레임워크의일부로작동하는몇몇기반클래스 (base classes) 가있습니다. 그것도좋습니다만, 코어클래스를여러분의클래스로대체하거나확장하는것도가능합니다. 대부분사용자들은이런것까지필요없겠지만, 깊이있게 CodeIgniter 의코어부분을튜닝하고싶어하는분들을위해이러한옵션을제공합니다. Note: 코어클래스에대해작업하는것은여러가지위험을내포하고있으므로, 매우신중하셔야합니다. 시스템클래스목록 다음의시스템클래스목록은 CodeIgniter 가작동할때마다호출되는클래스들입니다.: Benchmark Config

30 Controller Exceptions Hooks Input Language Loader Log Output Router URI 코어클래스대체 Replacing Core Classes 내장된코어클래스대신에당신이만든시스템클래스를사용하려면클래스파일을 application/libraries 폴더에저장하세요 : application/libraries/some-class.php 이폴더가없다면만드시면됩니다.. 당신의클래스이름이상단의클래스목록중어느하나와일치한다면당신의클래스가그것대신사용될것입니다.. 당신의클래스선언은는반드시 CI 접두어로시작해야합니다.. 예를들어, 당신이만든파일이름이 Input.php 이라면클래스는다음과같이선언해야합니다.: class CI_Input 코어클래스확장 내장코어클래스에몇몇함수추가정도를원하신다면내장클래스를확장하는것이현명합니다.. 클래스확장작업은대체작업과거의유사합니다. 클래스는반드시내장클래스를확장 (extend) 하여만드셔야합니다.. 당신이만드는클래스는반드시접두어 MY_ 로시작해야합니다.( 이접두어는설정에서바꿀수있습니다 ). 예를들어, 내장 Input 클래스를확장하고자한다면 application/libraries/my_input.php, 파일을만들고, 다음과같이클래스를선언합니다.: class MY_Input extends CI_Input Note: 만약생성자를사용해야한다면클래스생성자에서부모클래스의생성자를호출해주어야한다는점을잊지마세요 : class MY_Input extends CI_Input function My_Input() parent::ci_input(); Tip: 당신이만든클래스내의함주중에서부모클래스 ( 여기서는내장클래스 ) 의이름과같은함수는부모클래스의함수대신

31 사용됩니다.( 메소드오버라이딩과같습니다 ). 이러한특징으로부분적인내장클래스함수의변경이가능한것입니다.. 만약컨트롤러코어클래스 (Controller core class) 를확장한다면, 컨트롤러기반클래스를사용하는당신의프로그램에서그부분을확장된기반클래스이름으로바꾸셔야합니다.. class Welcome extends MY_Controller function Welcome() parent::my_controller(); function index() $this->load->view('welcome_message'); 나만의클래스에서쓰는접두어바꾸기 (Setting Your Own Prefix) 접두어를원하는대로바꾸려면 application/config/config.php 파일을여신후아래의변수를찾습니다.: $config['subclass_prefix'] = 'MY_'; 모든 CodeIgniter 내장클래스는접두어로 CI_ 을사용하고있으므로여러분의접두어에는사용하시면안됩니다. 에러핸들링 Error Handling CodeIgniter 는아래함수들을이용하여여러분프로그램에서에러에대한리포트를생성하도록지원합니다. 게다가, 에러로깅 (error logging ) 클래스도제공합니다. 에러로깅클래스를이용하면에러를텍스트파일로저장할수있습니다. Note: CodeIgniter 의기본설정은모든 PHP 에러를표시하는것입니다. 그런데님하의프로그램개발이완료되었을때이런기본설정을변경하고싶을수있습니다. 메인 index.php 의맨윗쪽에 error_reporting() 함수가있습니다. error reporting 을 disable 하는것이에러로그파일을기록하는것까지 disable 하지는않습니다. 대부분 CodeIgniter 의시스템과는달리, 에러함수는절차적인터페이스를가지며프로그램전반에걸쳐글로벌하게사용할수있다. 이런접근방법은클래스나함수의스코프에상관없이에러메시지를생성하게해줍니다. 다음함수는에러를생성하도록해줍니다.: show_error('message' [, int $status_code= 500 ] ) 이함수는아래템플릿을이용하여에러메세지를표시합니다.: application/errors/error_general.php 옵션인 $status_code 파라미터는에러와함께어떤 HTTP 상태코드가보내져야할지결정합니다. show_404('page') 이함수는아래템플릿을이용하여 404 에러메세지를표시합니다. application/errors/error_404.php 이함수는발견되지않은 (not found) 페이지의경로를문자열로전달받을것을가정합니다. 주의 : CodeIgniter 는컨트롤러를발견할수없으면자동적으로 404 에러메세지를표시합니다.

32 log_message('level', 'message') 이함수는로그파일에에러메세지를쓸수있도록합니다. 먼저 3 개의에러타입 (debug, error, info) 중하나의타입을첫번째파라미터로전달해야합니다. 메세지는두번째파라미터로전달합니다. 예제 : if ($some_var == "") log_message('error', 'Some variable did not contain a value.'); else log_message('debug', 'Some variable was correctly set'); log_message('info', 'The purpose of some variable is to provide some value.'); 3 가지메세지타입이있습니다 : 1. Error 메세지 : PHP 에러나사용자에러등진짜에러메시지. 2. Debug 메세지 : 디버그를도와주는메세지. 예를들어, 클래스가초기화되면님하는 debugging 정보로파일에기록할수있습니다. 3. Informational 메세지 : 이메시지는가장우선순위가낮은메세지. 단순히어떤프로세스에대한메세지를제공합니다. CodeIgniter 는 Info 메세지를작성하지않습니다만, 님하가원하시는메세지를스스로기록하실수있습니다. Note: 로그파일을기록하려면 "logs" 폴더에쓰기권한이있어야합니다. 또한, 쓰레스홀드 ("threshold) 를먼저세팅해야합니다. 예를들어, 에러메세지만기록하고싶을수도있겠죠?. 제로로세팅하시면로깅은비활성화 (disabled) 될것입니다. 모델 Models 모델은전통적인 MVC 패턴을구현하고자하는사람들이선택적으로사용할수있습니다. 모델이란무엇인가? 모델해부모델로드하기모델자동로드데이터베이스연결 What is a Model? 모델은데이터베이스와연동하여사용하기위한 PHP 클래스입니다. 예를들이, CodeIgniter 를이용하여블로그를관리한다고합시다. 아마삽입, 조회, 수정등의기능을가진모델클래스가필요할것입니다. 모델클래스의형태예제 : class Blogmodel extends Model var $title = ''; var $content = ''; var $date = ''; function Blogmodel() // Call the Model constructor parent::model();

33 function get_last_ten_entries() $query = $this->db->get('entries', 10); return $query->result(); function insert_entry() $this->title = $_POST['title']; // please read the below note $this->content = $_POST['content']; $this->date = time(); $this->db->insert('entries', $this); function update_entry() $this->title = $_POST['title']; $this->content = $_POST['content']; $this->date = time(); $this->db->update('entries', $this, array('id' => $_POST['id'])); Note: 위의함수들은액티브레코드 (Active Record) 를이용하여데이터베이스를이용하는방법을보여줍니다 Note: 이예제에서는단순화하기위하여 $_POST 를바로사용하였습니다. 일반적으로는나쁜예죠. 일반적인접근법은 Input 클래스를다음과같이사용하는것입니다.$this->input->post('title') 모델의해부 모델클래스는 application/models/ 폴더에저장됩니다. 서브폴더에저장하셔도됩니다. 모델클래스의기본프로토타입예 : class Model_name extends Model function Model_name() parent::model(); Model_name 은여러분의클래스이름으로바꾸세요. 클래스이름의첫글자는반드시대문자로시작해야하며나머지글자들은소문자라야합니다. 여러분의클래스는반드시 Model 클래스에서상속 (extends) 받아야합니다. 파일명은클래스명과같아야하나모두소문자여야합니다. 예를들어클래스가아래와같다면 : class User_model extends Model function User_model() parent::model(); 파일명은아래와같아야합니다 : application/models/user_model.php

34 모델로드하기 모델은일반적으로컨트롤러내에서로드되어호출됩니다. 모델은아래와같은방법으로로드합니다 : $this->load->model('model_name'); 모델이하위폴더에있다면상대경로로모델폴더를적어줍니다. 예를들어모델이 application/models/blog/queries.php 경로에위치해있다면아래와같이로드할수있습니다 : $this->load->model('blog/queries'); 모델이로드되면모델클래스의이름과같은객체로모델내의함수를사용할수있습니다. 예제 : $this->load->model('model_name'); $this->model_name->function(); 모델을다른객체이름으로할당하여사용하고싶다면두번째파라미터에사용하고싶은이름을넘겨서로드하시면됩니다예 : $this->load->model('model_name', 'fubar'); $this->fubar->function(); 아래는모델을로드하여그데이터를뷰에넘겨주는예제입니다 : class Blog_controller extends Controller function blog() $this->load->model('blog'); $data['query'] = $this->blog->get_last_ten_entries(); $this->load->view('blog', $data); 모델자동로드 프로그램전체에걸쳐글로벌로모델을로드해야할경우라면자동로드설정을통해자동으로로드하도록할수있습니다. application/config/autoload.php 파일을열어서 autoload 배열에원하는모델을추가하세요. 데이터베이스연결 모델이로드되었을때그모델이자동으로데이터베이스에연결하지는않습니다. 다음의옵션을사용하여연결하세요. 표준데이터베이스메소드 ( 상세설명 ) 를이용하여컨트롤러나모델에서데이터베이스에연결할수있습니다. 모델을로드할때세번째파라미터를 TRUE (boolean) 로설정하여자동연결할수있습니다. 이때 database config 파일에설정된정보가사용될것입니다 : $this->load->model('model_name', '', TRUE); 세번째파라미터로데이터베이스연결정보를넘겨주어서연결할수도있습니다 :

35 $config['hostname'] = "localhost"; $config['username'] = "myusername"; $config['password'] = "mypassword"; $config['database'] = "mydatabase"; $config['dbdriver'] = "mysql"; $config['dbprefix'] = ""; $config['pconnect'] = FALSE; $config['db_debug'] = TRUE; $this->load->model('model_name', '', $config); CI 에서의 URL 규칙 CodeIgniter URLs CodeIgniter 에서생성한 URL 은깔끔하고검색엔진에서색인되기좋은구조입니다. 일반적인쿼리스트링기반의 URL 이아니라세그먼트기반의 URL 을사용합니다. example.com/news/article/my_article Note: 아래기술된바와같이쿼리스트링 (Query string) URL 또한사용할수있습니다 ( 옵션 ). URI 세그먼트 URL 세그먼트는 MVC 패턴을기반으로아래와같이표현됩니다. example.com/class/function/id 1. 첫세그먼트는호출될컨트롤러 class 를나타냅니다. 2. 두번째세그먼트는클래스안의호출될 function, 혹은메쏘드를나타냅니다. 3. 세번째이후는컨트롤러로전달될어떤변수라도될수있습니다.( 예제에서는 ID) URI 클래스및 URL 헬퍼의함수들을이용하시면손쉽게 URI 데이터를조작하실수있습니다. 그리고, URL 은 URI Routing 을이용하시면좀더유연하게재매핑될수있습니다.. index.php 파일제거하기 기본적으로 index.php 파일은 URL 에아래와같이포함됩니다 : example.com/index.php/news/article/my_article.htaccess 파일을규칙에따라사용하시면쉽게 index.php 를제거하실수있습니다. 지정된것이아니면모두리디렉션하는 "negative" method( 제한메소드 ) 를아래와같이사용하세요 : RewriteEngine on RewriteCond $1!^(index\.php images robots\.txt) RewriteRule ^(.*)$ /index.php/$1 [L] 위예제의설정을통하여 index.php, 이미지, robots.txt 등에대한 HTTP 요청은 index.php 파일을요청한것으로취급됩니다.

36 URL 에확장자추가하기 config/config.php 파일에서 URL 끝에확장자를추가하도록설정할수있습니다 만약 URL 이아래와같다면 : example.com/index.php/products/view/shoes.html 등의확장자를추가하여일반적인웹페이지인것처럼보이게할수있습니다.: example.com/index.php/products/view/shoes.html 쿼리스트링 (Query Strings) 사용하기 아래와같이 URL 에서쿼리스트링을사용하는게필요한경우도있을것입니다.: index.php?c=products&m=view&id=345 application/config.php 파일에서아래부분을찾아보세요. $config['enable_query_strings'] = FALSE; $config['controller_trigger'] = 'c'; $config['function_trigger'] = 'm'; "enable_query_strings" 을 TRUE 로바꾸면됩니다. 이때컨트롤러와함수는당신이설정한값에따라서호출할수있습니다 ( 위의경우 c 는컨트롤러호출 m 은함수호출 ): index.php?c=controller&m=method Please note: 쿼리스트링을이용하시면 URL 헬퍼 ( form 헬퍼와같이 URLs 을생성하는헬퍼들 ) 을사용하실수없습니다. 컨트롤러 Controllers 컨트롤러는여러분프로그램의핵심이라할수있습니다. 왜냐하면 Http 요청을어떻게처리할지결정하기때문입니다. 컨트롤러란무엇인가? Hello World 함수들 URI Segments를함수에전달하기기본 Controller정의함수요청을재매핑하기출력데이터조절 Private 함수컨트롤러들을하위폴더로구성하기클래스생성자예약된함수명

37 컨트롤러란무엇인가? 간단하게말하면컨트롤러는 URL 과상호작용하는클래스파일이라고할수있습니다. 아래 URI 를보세요 : example.com/index.php/blog/ 위예제에서 CodeIgniter 는 blog.php 라는파일을 Controller 로서찾은후로드합니다. 컨트롤러의이름이 URI 의첫번째새그먼트와동일하다면해당컨트롤러는자동적으로로드될것입니다. 따라해보세요 : Hello World! 실재로작동되는걸확인해보는것이쵝오죠! blog.php 라는파일을만든후다음의코드를입력하세요. <?php class Blog extends Controller?> function index() echo 'Hello World!'; 그다음에 application/controllers/ 폴더에저장하세요. 자이제아래예처럼브라우저에서접속보세요.(example.com 부분은여러분의 url 로대체되어야합니다 ): example.com/index.php/blog/ 정상적으로하셨다면 Hello World! 라는텍스트가화면에표시되는걸보실수있을거예요. Note: 클래스명은반드시대문자로시작되어야합니다. 아래의예제는맞습니다.: <?php class Blog extends Controller?> 그러나아래의예제는틀렸습니다. <?php class blog extends Controller?> 님하가만드신컨트롤러는반드시부모컨트롤러로부터상속 (extends) 받아야합니다. 그렇지않으면컨트롤러의기능을사용할수없습니다. 함수 (Functions) 위예제에서함수이름은 index() 였습니다. "index" 함수는 URI 에서두번째새그먼트가전달되지않을때기본으로실행됩니다. 아래와같은방법으로도위예제와같이 "Hello World" 를화면에뿌릴수있습니다.

38 example.com/index.php/blog/index/ URI 의두번째새그먼트는컨트롤러내의어떤함수가실행될지를결정합니다.. 따라해보세요. 새로운함수를컨트롤러에추가합니다. <?php class Blog extends Controller function index() echo 'Hello World!';?> function comments() echo 'Look at this!'; 아래 URL 로접속하여 comment 함수를실행시켜봅시다 : example.com/index.php/blog/comments/ 새로운메세지가보이시죠? 짝짝짝 URI Segments 를함수에전달하기 URI 가 2 개보다많은세그먼트를포함하고있다면나머지들은파라미터로함수에전달됩니다. 예를들어다음의 URL 이라면 : example.com/index.php/products/shoes/sandals/123 함수는새그먼트 3 번과 4 번 ("sandals" 및 "123") 을파라미터로전달받게됩니다. <?php class Products extends Controller function shoes($sandals, $id) echo $sandals; echo $id;?> 중요 : 만약 URI 라우팅 (Routing) 을사용하고있다면, 함수에전달된새그먼트는재라우팅된새그먼트일것입니다. 기본 Controller 정의 새그먼트없이사이트의루트 url 만요청될때실행될기본컨트롤러를지정할수있습니다. 기본컨트롤러를지정하려면 application/config/routes.php 파일의아래변수에세팅합니다.

39 $route['default_controller'] = 'Blog'; 위와같이 Blog 를기본컨트롤러로지정하면루트 url 이요청되었을때이제는 Hello World 를보실수있을것입니다. 함수요청을재매핑하기 위에서설명한것처럼, 일반적으로 URI 의두번째새그먼트는컨트롤러내의어떤함수를실행할것인가를결정합니다. 이런일반루틴을재정의하여원하는액션으로바꿀수있습니다. 그러려면 _remap() 함수를사용합니다. function _remap() // Some code here... Important: 만약컨트롤러가 _remap() 함수를포함하고이다면, URI 가어떻든간에 _remap() 함수를호출하게될것입니다. 왜냐하면 _remap() 은 CI 가정의해놓은일반루틴대신여러분자신만의라우팅방법으로재정의해버리기때문입니다. 재정의된함수호출 ( 일반적으로 URI 의두번째새그먼트 ) 은함수명이 _remap() 의파라미터로전달됩니다 : function _remap($method) if ($method == 'some_method') $this->$method(); else $this->default_method(); 출력데이터조절 (Processing Output) CodeIgniter 는최종적으로렌더링되어자동적으로브라우저에데이터를전송해주는출력클래스를가지고있습니다. 뷰항목과출력클래스페이지에서보다자세한정보를보실수있습니다. 그러나어떤경우에는최종적으로데이터가브라우저로보내지기전에뭔가전처리를해야할때도있을것입니다. 그것은컨트롤러에 _output() 함수를추가하는것으로가능합니다. Important: 컨트롤러가 _output() 라는함수를가지고있다면최종데이터를바로전송하는것대신그함수가실행될것입니다. 함수의첫번째파라미터는최종출력데이터를가지고있습니다. 예제 : function _output($output) echo $output; 중요 : _output() 는최종데이터를받습니다. 최종데이터가 _output() 에전달되기전에벤치마크및메모리사용데이터는렌더링될것이고, 캐시작성이활성상태라면캐시파일도작성되며, feature 항목을사용한다면헤더정보도보내질것입니다. 그런데이함수를사용한다면페이지실행시간및메모리사용상태정보는정확하지않을수있습니다. 왜냐하면그러한정보들은당신이 _output() 에서처리할내용이어떤것인지계산에넣고있지않기때문입니다. 출력을조절하는다른방법은출력클래스항목에서찾아보세요. Private 함수 때에따라서함수의공개적접근을허용해서는안될경우도있을것입니다. 함수를 private 으로만들려면, 간단히밑줄 (_) 을함

40 수이름앞에추가해주세요. 그러면웹에서호출할수없게됩니다. 예제 : function _utility() // some code 아래와같이접근하려해도작동하지않을것입니다 : example.com/index.php/blog/_utility/ 컨트롤러들을하위폴더로구성하기 대형사이트를만든다면아마도컨트롤러를하위폴더로구성하는것이더나을것입니다. application/controllers 아래에폴더를만든다음컨트롤러클래스들을그안에넣으세요. Note: 이런식으로사용하는경우에 URI 첫번째새그먼트는반드시폴더명이라야합니다. 예를들어, 여러분의컨트롤러위치가아래와같다면 : application/controllers/products/shoes.php 위의컨트롤러를호출하기위해서는아래와같은 URI 를사용해야합니다 : example.com/index.php/products/shoes/show/123 각각의하위폴더는 URL 에서하위폴더만을호출할때를대비하여기본컨트롤러를가지고있어야할것입니다. 간단히기본컨트롤러를 application/config/routes.php 파일에설정하시면됩니다. 또한 CodeIgniter 는 URI 를 URI 라우팅 ( Routing) 기능을이용하여재매핑할수있도록지원하고있습니다. 클래스생성자 컨트롤러에서생성자를사용하고자한다면생성자아래반드시아래의코드가들어있어야합니다.: parent::controller(); 그렇지않으면여러분이만든생성자가부모 controller 의생성자를재정의해버리기때문입니다. 그러므로반드시위와같이부모 controller 를수동으로호출해주어야합니다. 생성자에익숙하지않은분들을위해 : 생성자는클래스명과같은이름을가진함수입니다. <?php class Blog extends Controller?> function Blog() parent::controller();

41 PHP 5 에서생성자는다음문법을따릅니다 : <?php class Blog extends Controller?> function construct() parent::controller(); 생성자는클래스가초기화될때어떤기본값들을설정해야한다거나어떤프로세스를수행해야할때유용합니다. 생성자는리턴값이있어서는안됩니다. 예약된함수명 예약어페이지를참고해주세요 후킹 - 프레임워크코어확장 Hooks - Extending the Framework Core CodeIgniter 의후킹기능은코어파일들을해킹하지않고도내부작동방식을변경할수있도록합니다. CodeIgniter 가작동하기시작하면동작개념도에설명된처리순서에따라서일을처리합니다. 그러나, 당신은특정한순서에서처리하는방식을새롭게바꾸고싶을수도있습니다. 예를들어, 당신은컨트롤러가로드되기전에특정한기능이수행되도록하고싶거나, 혹은특정순서중에당신만의기능이수행되도록하고싶을수도있습니다. 후킹활성화 (Enabling Hooks) 후킹은글로벌로동작하며 application/config/config.php 파일에있는아래변수를통해서활성화가능합니다.: $config['enable_hooks'] = TRUE; 후크정의 (Defining a Hook) 후크는 application/config/hooks.php 파일에정의되어있습니다. 각후크는아래의형태로정의됩니다 : $hook['pre_controller'] = array( 'class' => 'MyClass', 'function' => 'Myfunction', 'filename' => 'Myclass.php', 'filepath' => 'hooks', 'params' => array('beer', 'wine', 'snacks') ); 주의 : 배열의인덱스는여러분이사용하고자하는후크포인트의이름과연관됩니다. 위예제의경우에후크포인트는 pre_controller 가됩니다. 후크포인트의목록은아래에있습니다. 다음아이템들은당신의연관후크배열에반드시정의되어야합니다. 클래스 (class) 당신이호출하고자하는클래스의이름입니다. 만약클래스대신순차함수 (procedural function) 를사용한다면이항목을공백으로해주세요. 함수 (function) 호출하고자하는함수의이름입니다.

42 파일이름 (filename) 당신의스크립트 ( 클래스, 함수 ) 를정의해둔파일이름입니다. 파일경로 (filepath) 파일경로 ( 파일명을제외한디렉토리경로 ) 입니다. 주의 : 당신의스크립트는반드시 application 폴더안에있어야합니다. 파일경로는그폴더로부터의상대경로로설정됩니다.. 예를들어, 당신의스크립트가 application/hooks 에있다면, 파일경로는 hooks 가됩니다. 당신의스크립트가 application/hooks/utilities 에있다면파일경로는 hooks/utilities 가되며끝부분에슬래시 (/) 가붙지않습니다. 파라미터들 (params) 스크립트로전달하고자하는파라미터. 파라미터는옵션입니다. 동일한후크포인트에서여러후크호출하기 Multiple Calls to the Same Hook 같은후크포인트를하나이상의스크립트에서사용하고싶다면간단히배열정의를다차원으로합니다. 예제 : $hook['pre_controller'][] = array( 'class' => 'MyClass', 'function' => 'Myfunction', 'filename' => 'Myclass.php', 'filepath' => 'hooks', 'params' => array('beer', 'wine', 'snacks') ); $hook['pre_controller'][] = array( 'class' => 'MyOtherClass', 'function' => 'MyOtherfunction', 'filename' => 'Myotherclass.php', 'filepath' => 'hooks', 'params' => array('red', 'yellow', 'blue') ); 주의할것은대괄호 ([]) 가각배열인덱스뒤에있다는점입니다.: $hook['pre_controller'][] 이것을이용하면다양한스크립트를같은후크포인트로사용할수있습니다. 배열의순서는처리순서가될것입니다. 후크포인트 Hook Points 다음은가능한후크포인트목록입니다.. pre_system 시스템작동초기입니다. 벤치마크와후킹클래스들만로드된상태로서, 라우팅을비롯한어떤다른프로세스도진행되지않은상태입니다. pre_controller 컨트롤러가호출되기직전입니다. 모든기반클래스 (base classes), 라우팅그리고보안점검이완료된상태입니다. post_controller_constructor 컨트롤러가인스턴스화된직후입니다. 즉사용준비가완료된상태가되겠죠. 하지만, 인스턴스화된후메소드들이호출되기직전입니다. post_controller 컨트롤러가완전히수행된직후입니다. display_override _display() 함수를재정의합니다. 최종적으로브라우저에페이지를전송할때사용됩니다. 이로서당신만의표시방법 ( display methodology) 을사용할수있습니다. 주의 : CI 부모객체 (superobject) 를 $this->ci =& get_instance() 로호출하여사용한후에최종데이터작성은 $this->ci->output->get_output() 함수를호출하여할수있습니다. cache_override 출력클래스 (output class) 에있는 _display_cache() 함수대신당신의스크립트를호출할수있도록해줍니다. 이로서당신만의캐시표시메커니즘 (cache display mechanism) 을적용할수있습니다. scaffolding_override 스캐폴드호출에대해당신이만든스크립트를스캐폴드대신수행하도록해줍니다.

43 post_system 최종렌더링페이지가브라우저로보내진후에호출됩니다. 스타일가이드 General Style and Syntax 본페이지는 CI 를가지고개발할때유용한코딩규칙을보여줍니다. 목차 Table of Contents PHP를닫는태그 PHP Closing Tag 클래스및메소드이름짓기 Class and Method Naming 변수명 Variable Names 주석달기 Commenting 상수 Constants TRUE, FALSE, and NULL 논리연산 Logical Operators 리턴값비교및형변환 Comparing Return Values and Typecasting 디버깅 Debugging Code 파일내의공백 Whitespace in Files 호환성 Compatibility 일반적단어를사용한클래스및파일이름Class and File Names using Common Words 데이터베이스테이블명 Database Table Names 한클래스에한파일 One File per Class 공백 Whitespace 줄바꿈 Line Breaks 인던트 Code Indenting 대괄호및삽입구공간 Bracket and Parenthetic Spacing 제어판에서의로컬라이즈텍스트 Localized Text in Control Panel 프라이빗메소드와변수 Private Methods and Variables PHP 에러 PHP Errors 짧은여는태그 Short Open Tags 한줄에한문장 One Statement Per Line 문자열 Strings 쿼리 SQL Queries 기본함수파라미터 Default Function Arguments 중복태그파라미터 Overlapping Tag Parameters PHP Closing Tag The PHP closing tag on a PHP document?> is optional to the PHP parser. However, if used, any whitespace following the closing tag, whether introduced by the developer, user, or an FTP application, can cause unwanted output, PHP errors, or if the latter are suppressed, blank pages. For this reason, all PHP files should OMIT the closing PHP tag, and instead use a comment block to mark the end of file and it's location relative to the application root. This allows you to still identify a file as being complete and not truncated.

44 INCORRECT: <?php echo "Here's my code!";?> CORRECT: <?php echo "Here's my code!"; /* End of file myfile.php */ /* Location:./system/modules/mymodule/myfile.php */ Class and Method Naming Class names should always have their first letter uppercase, and the constructor method should match identically. Multiple words should be separated with an underscore, and not CamelCased. All other class methods should be entirely lowercased and named to clearly indicate their function, preferably including a verb. Try to avoid overly long and verbose names. INCORRECT: class superclass class SuperClass CORRECT: class Super_class Notice that the Class and constructor methods are identically named and cased: class Super_class function Super_class() Examples of improper and proper method naming: INCORRECT: function fileproperties() // not descriptive and needs underscore separator function fileproperties() // not descriptive and uses CamelCase function getfileproperties() // Better! But still missing underscore separator function getfileproperties() // uses CamelCase function get_the_file_properties_from_the_file() // wordy CORRECT: function get_file_properties() // descriptive, underscore separator, and all lowercase letters Variable Names The guidelines for variable naming is very similar to that used for class methods. Namely, variables should contain only lowercase letters, use underscore separators, and be reasonably named to indicate their purpose and contents. Very short, non-word variables should only be used as iterators in for() loops. INCORRECT: $j = &apos;foo&apos;; // single letter variables should only be used in for() loops $Str // contains uppercase letters $bufferedtext // uses CamelCasing, and could be shortened without losing semantic meaning $groupid // multiple words, needs underscore separator $name_of_last_city_used // too long CORRECT: for ($j = 0; $j < 10; $j++) $str $buffer $group_id $last_city Commenting In general, code should be commented prolifically. It not only helps describe the flow and intent of the code for less experienced programmers, but can prove invaluable when returning to your own code months down the line. There is not a required format for comments, but the following are recommended. DocBlock style comments preceding class and method declarations so they can be picked up by IDEs: /** * Super Class * Package Name Subpackage Category Author Name */ class Super_class /** * Encodes string for use in XML * public string string */ function xml_encode($str) Use single line comments within code, leaving a blank line between large comment blocks and code. // break up the string by newlines $parts = explode("\n", $str); // A longer comment that needs to give greater detail on what is // occurring and why can use multiple single-line comments. Try to // keep the width reasonable, around 70 characters is the easiest to // read. Don't hesitate to link to permanent external resources // that may provide greater detail: // // $parts = $this->foo($parts);

45 Constants Constants follow the same guidelines as do variables, except constants should always be fully uppercase. Always use ExpressionEngine constants when appropriate, i.e. SLASH, LD, RD, PATH_CACHE, etc. INCORRECT: myconstant // missing underscore separator and not fully uppercase N // no single-letter constants S_C_VER // not descriptive $str = str_replace('foo', 'bar', $str); // should use LD and RD constants CORRECT: MY_CONSTANT NEWLINE SUPER_CLASS_VERSION $str = str_replace(ld.'foo'.rd, 'bar', $str); TRUE, FALSE, and NULL TRUE, FALSE, and NULL keywords should always be fully uppercase. INCORRECT: if ($foo == true) $bar = false; function foo($bar = null) CORRECT: if ($foo == TRUE) $bar = FALSE; function foo($bar = NULL) Logical Operators Use of is discouraged as its clarity on some output devices is low (looking like the number 11 for instance). && is preferred over AND but either are acceptable, and a space should always precede and follow!. INCORRECT: if ($foo $bar) if ($foo AND $bar) // okay but not recommended for common syntax highlighting applications if (!$foo) if (! is_array($foo)) CORRECT: if ($foo OR $bar) if ($foo && $bar) // recommended if (! $foo) if (! is_array($foo)) Comparing Return Values and Typecasting Some PHP functions return FALSE on failure, but may also have a valid return value of "" or 0, which would evaluate to FALSE in loose comparisons. Be explicit by comparing the variable type when using these return values in conditionals to ensure the return value is indeed what you expect, and not a value that has an equivalent loose-type evaluation. Use the same stringency in returning and checking your own variables. Use === and!== as necessary. INCORRECT: // If 'foo' is at the beginning of the string, strpos will return a 0, // resulting in this conditional evaluating as TRUE if (strpos($str, 'foo') == FALSE) CORRECT: if (strpos($str, 'foo') === FALSE) INCORRECT: function build_string($str = "") if ($str == "") // uh-oh! What if FALSE or the integer 0 is passed as an argument? CORRECT: function build_string($str = "") if ($str === "") See also information regarding typecasting, which can be quite useful. Typecasting has a slightly different effect which may be desirable. When casting a variable as a string, for instance, NULL and boolean FALSE variables become empty strings, 0 (and other numbers) become strings of digits, and boolean TRUE becomes "1": $str = (string) $str; // cast $str as a string Debugging Code No debugging code can be left in place for submitted add-ons unless it is commented out, i.e. no var_dump(), print_r(), die(), and exit() calls that were used while creating the add-on, unless they are commented out.

46 // print_r($foo); Whitespace in Files No whitespace can precede the opening PHP tag or follow the closing PHP tag. ExpressionEngine output is buffered, so whitespace in your files can cause output to begin before ExpressionEngine outputs its content, leading to errors and an inability for ExpressionEngine to send proper headers. In the examples below, select the text with your mouse to reveal the incorrect whitespace. INCORRECT: <?php //...there is whitespace and a linebreak above the opening PHP tag // as well as whitespace after the closing PHP tag? > CORRECT: <?php // this sample has no whitespace before or after the opening and closing PHP tags?> Compatibility Unless specifically mentioned in your add-on's documentation, all code must be compatible with PHP version Additionally, do not use PHP functions that require non-default libraries to be installed unless your code contains an alternative method when the function is not available, or you implicitly document that your add-on requires said PHP libraries. Class and File Names using Common Words When your class or filename is a common word, or might quite likely be identically named in another PHP script, provide a unique prefix to help prevent collision. Always realize that your end users may be running other addons or third party PHP scripts. Choose a prefix that is unique to your identity as a developer or company. INCORRECT: class pi. .php class Xml ext.xml.php class Import mod.import.php CORRECT: class Pre_ pi.pre_ .php class Pre_xml ext.pre_xml.php class Pre_import mod.pre_import.php Database Table Names Any tables that your add-on might use must use the 'exp_' prefix, followed by a prefix uniquely identifying you as the developer or company, and then a short descriptive table name. You do not need to be concerned about the database prefix being used on the user's installation, as ExpressionEngine's database class will automatically convert 'exp_' to what is actually being used. INCORRECT: _addresses // missing both prefixes pre_ _addresses // missing exp_ prefix exp_ _addresses // missing unique prefix CORRECT: exp_pre_ _addresses NOTE: Be mindful that MySQL has a limit of 64 characters for table names. This should not be an issue as table names that would exceed this would likely have unreasonable names. For instance, the following table name exceeds this limitation by one character. Silly, no? exp_pre_ _addresses_of_registered_users_in_seattle_washington One File per Class

47 Use separate files for each class your add-on uses, unless the classes are closely related. An example of ExpressionEngine files that contains multiple classes is the Database class file, which contains both the DB class and the DB_Cache class, and the Magpie plugin, which contains both the Magpie and Snoopy classes. Whitespace Use tabs for whitespace in your code, not spaces. This may seem like a small thing, but using tabs instead of whitespace allows the developer looking at your code to have indentation at levels that they prefer and customize in whatever application they use. And as a side benefit, it results in (slightly) more compact files, storing one tab character versus, say, four space characters. Line Breaks Files must be saved with Unix line breaks. This is more of an issue for developers who work in Windows, but in any case ensure that your text editor is setup to save files with Unix line breaks. Code Indenting Use Allman style indenting. With the exception of Class declarations, braces are always placed on a line by themselves, and indented at the same level as the control statement that "owns" them. INCORRECT: function foo($bar) //... foreach ($arr as $key => $val) //... if ($foo == $bar) //... else //... for ($i = 0; $i < 10; $i++) for ($j = 0; $j < 10; $j++) //... CORRECT: function foo($bar) //... foreach ($arr as $key => $val) //... if ($foo == $bar) //... else //... for ($i = 0; $i < 10; $i++) for ($j = 0; $j < 10; $j++) //... Bracket and Parenthetic Spacing In general, parenthesis and brackets should not use any additional spaces. The exception is that a space should always follow PHP control structures that accept arguments with parenthesis (declare, do-while, elseif, for, foreach, if, switch, while), to help distinguish them from functions and increase readability. INCORRECT: $arr[ $foo ] = 'foo'; CORRECT: $arr[$foo] = 'foo'; // no spaces around array keys INCORRECT: function foo ( $bar ) CORRECT: function foo($bar) // no spaces around parenthesis in function declarations INCORRECT: foreach ( $query->result() as $row ) CORRECT: foreach ($query->result() as $row) // single space following PHP control structures, but not in interior parenthesis Localized Text in Control Panel Any text that is output in the control panel should use language variables in your module's lang file to allow localization. INCORRECT: return "Invalid Selection"; CORRECT: return $LANG->line('invalid_selection'); Private Methods and Variables Methods and variables that are only accessed internally by your class, such as utility and helper functions that your public methods use for code abstraction, should be prefixed with an underscore. convert_text() // public method _convert_text() // private method

48 PHP Errors Code must run error free and not rely on warnings and notices to be hidden to meet this requirement. For instance, never access a variable that you did not set yourself (such as $_POST array keys) without first checking to see that it isset(). Make sure that while developing your add-on, error reporting is enabled for ALL users, and that display_errors is enabled in the PHP environment. You can check this setting with: if (ini_get('display_errors') == 1) exit "Enabled"; On some servers where display_errors is disabled, and you do not have the ability to change this in the php.ini, you can often enable it with: ini_set('display_errors', 1); NOTE: Setting the display_errors setting with ini_set() at runtime is not identical to having it enabled in the PHP environment. Namely, it will not have any effect if the script has fatal errors Short Open Tags Always use full PHP opening tags, in case a server does not have short_open_tag enabled. INCORRECT: <? echo $foo;?> <?=$foo?> CORRECT: <?php echo $foo;?> One Statement Per Line Never combine statements on one line. INCORRECT: $foo = 'this'; $bar = 'that'; $bat = str_replace($foo, $bar, $bag); CORRECT: $foo = 'this'; $bar = 'that'; $bat = str_replace($foo, $bar, $bag); Strings Always use single quoted strings unless you need variables parsed, and in cases where you do need variables parsed, use braces to prevent greedy token parsing. You may also use double-quoted strings if the string contains single quotes, so you do not have to use escape characters. INCORRECT: "My String" // no variable parsing, so no use for double quotes "My string $foo" // needs braces 'SELECT foo FROM bar WHERE baz = \'bag\'' // ugly CORRECT: 'My String' "My string $foo" "SELECT foo FROM bar WHERE baz = 'bag'" SQL Queries MySQL keywords are always capitalized: SELECT, INSERT, UPDATE, WHERE, AS, JOIN, ON, IN, etc. Break up long queries into multiple lines for legibility, preferably breaking for each clause. INCORRECT: // keywords are lowercase and query is too long for // a single line (... indicates continuation of line) $query = $this->db->query("select foo, bar, baz, foofoo, foobar as raboof, foobaz from exp_pre_ _addresses...where foo!= 'oof' and baz!= 'zab' order by foobaz limit 5, 100"); CORRECT: $query = $this->db->query("select foo, bar, baz, foofoo, foobar AS raboof, foobaz FROM exp_pre_ _addresses WHERE foo!= 'oof' AND baz!= 'zab' ORDER BY foobaz LIMIT 5, 100");

49 Default Function Arguments Whenever appropriate, provide function argument defaults, which helps prevent PHP errors with mistaken calls and provides common fallback values which can save a few lines of code. Example: function foo($bar = '', $baz = FALSE) Overlapping Tag Parameters Avoid multiple tag parameters that have effect on the same thing. For instance, instead of include= and exclude=, perhaps allow include= to handle the parameter alone, with the addition of "not", e.g. include="not bar". This will prevent problems of parameters overlapping or having to worry about which parameter has priority over another. View 에서 PHP 문법을 CI 문법으로대체 Alternate PHP Syntax for View Files CodeIgniter 의템플릿엔진을사용하지않는다면, 아마님하는 View 파일에서순수 PHP 를쓰실겁니다. 뷰파일에서 PHP 코드를최소화하기위해서루프등코드블록에서는 PHP 대체문법을사용하시고, echo 문의경우에는단축태그를사용하시길권장합니다. 여러분이이런문법에익숙하지않았다면, 이문법은여러분의코드에서대괄호 (brace) 를제거해주고 echo 문을제거해줄것입니다. 자동화된짧은태그지원 Automatic Short Tag Support Note: 본페이지에서설명하는문법이당신의서버에서는작동하지않는다면, 아마 php.ini 파일에서짧은태그 (short tags) 가비활성화 (disabled) 되어있기때문일것입니다.CodeIgniter 는만약서버에서지원하지않는다고해도본페이지의문법을사용할수있도록옵션을제공합니다. 해당옵션을적용하면짧은태그 (short tags) 를즉석해서다시쓸것 (rewrite) 입니다. 이옵션은 config/config.php 파일에서설정할수있습니다. 주의 : 만약이옵션을사용하지않으시면, 뷰 (View) 파일에서 PHP 에러가발생했을때, 에러메시지와줄번호가정확하게표시되지않을것입니다. 대신에모든에러는 eval() 에러처럼표시될것입니다. 에코문대체 Alternative Echos 일번적으로에코문을사용하여변수를출력하려면아래와같이할것입니다 : <?php echo $variable;?> 대체문법은아래와같습니다.: <?=$variable?> 대체분기, 루프구조 Alternative Control Structures if, for, foreach 및 while 과같은분기, 루프구조또한단순한구조로사용될수있습니다. 아래는 foreach 문의예제입니다 : <ul>

50 <?php foreach($todo as $item):?> <li><?=$item?></li> <?php endforeach;?> </ul> 보시는바와같이대괄호가없고대신괄호닫는부분이 endforeach 로변경되었습니다. 앞에나열된각종분기, 루프구조는유사한구조를가집니다. 닫는괄호부분은 endif, endfor, endforeach, endwhile 를사용하시면됩니다. 또한각구조뒤에세미콜론이아닌콜론을사용한다는점을주의하세요 ( 끝부분제외 ). if 문을사용하는예제입니다. 콜론에주목해주세요 : <?php if ($username == 'sally'):?> <h3>hi Sally</h3> <?php elseif ($username == 'joe'):?> <h3>hi Joe</h3> <?php else:?> <h3>hi unknown user</h3> <?php endif;?> 헬퍼 Helper Functions 헬퍼는여러분의일에뭔가를제안하고도와주는존재입니다. 각각의헬퍼파일은특정영역에해당하는함수들의모음입니다. 예를들어 URL 헬퍼의경우링크생성을도와주며,Form 헬퍼는폼의요소를만드는데도움이되고, Text 헬퍼는다양한텍스트처리 (formatting) 을도와주며, Cookie 헬퍼는쿠키를읽고쓰는데, File 헬퍼는파일을조작하는데도움이될것입니다. CodeIgniter 의다른시스템과는다르게, 헬퍼는객체지향적인형태로작성되지않았습니다. 헬퍼의함수들은간단하고, 절차적입니다. 각헬퍼함수들은특정한한가지일만하며, 다른헬퍼함수에의존하지않습니다. CodeIgniter 는헬퍼를자동으로로드하지않으므로, 사용을위해서는먼저해당헬퍼를로드해야합니다. 한번로드되면여러분의컨트롤러및뷰에서글로벌하게사용할수있습니다.. 헬퍼는통상 system/helpers 폴더나 system/application/helpers 폴더에위치합니다. CodeIgniter 는 system/application/helpers 폴더를먼저살펴볼것입니다. 해당디렉토리가없거나, 해당디렉토리에찾는헬퍼가없다면 CI 는글로벌헬퍼가저장되어있는 system/helpers 폴더를살펴볼것입니다. 헬퍼로드하기 헬퍼를로드하는것은다음예제처럼매우간단합니다 : $this->load->helper('name'); name 은헬퍼파일이름을가리키며.php 확장자및 _helper 는붙이지않습니다. 예를들어 URL 헬퍼를로드할경우, url_helper.php 라는파일이므로다음과같이로드합니다 : $this->load->helper('url'); 헬퍼는사용하기전에반드시먼저로드해야하며컨트롤러의어느함수안에서로드해도상관없습니다. 심지어뷰파일안에서도로드할수있습니다만권장하지않습니다. 헬퍼를컨트롤러의생성자에서로드해두면컨트롤러내부의어떤함수에서도바로사용할수있습니다. 그렇지않으면헬퍼가필요한해당함수에서로드하여사용하셔도됩니다..

51 Note: 헬퍼를로드하는것은리턴값이없으므로리턴값을저장하기위하여변수에할당하지마시기바랍니다. 그저위의예시처럼사용하시면됩니다.. 여러개의헬퍼로드하기 여러개의헬퍼를로드해야할경우, 아래와같이배열을이용할수있습니다 : $this->load->helper( array('helper1', 'helper2', 'helper3') ); 헬퍼자동로드 헬퍼가프로그램전반에광범위하게쓰여야한다면자동로드설정으로시스템초기화과정에서자동으로로드할수있습니다.application/config/autoload.php 파일을연다음 autoload 배열에해당헬퍼를추가해주세요. 헬퍼사용하기 헬퍼는일단한번로드되면, 표준 PHP 함수를사용하듯사용하면됩니다.. 예를들어 anchor() 함수를이용하여링크 (< a 태그 ) 를생성한다면 View 파일에서다음과같이사용할수있습니다.: <?php echo anchor('blog/comments', 'Click Here');?> "Click Here" 은이름 ( <a 태그안에 name 속성 ) 이되고 "blog/comments" 는연결하고자하는 url 이됩니다. 이 URL 은통상 controller/function 형태를가지게되겠죠. 헬퍼의확장 헬퍼를확장하려면 application/helpers/ 폴더아래기존헬퍼와겹치지않는이름의파일을만듦니다. 이때이름의접두어는 MY_ 가되어야합니다.( 이부분은설정이가능합니다. 아래를보세요 ). 기존헬퍼에두어개의함수를추가할경우헬퍼를새로작성하는것은낭비입니다. 이런경우기존의헬퍼를상속 (extends) 하는것이현명합니다. 상속 (extend) 라는말은대략적으로사용하겠습니다. 왜냐하면헬퍼함수는절차적이며따로따로작용하기때문입니다. 헬퍼는전통적인프로그램기법과는다르게상속 (extends) 됩니다. 이방법을통해서기존의헬퍼에기능을추가하거나기존기능을수정할수있게됩니다. 예를들어내장된 Array Helper 를사용할경우 application/helpers/my_array_helper.php 파일을생성하고함수를추가하거나재정의합니다.: // any_in_array() is not in the Array Helper, so it defines a new function function any_in_array($needle, $haystack) $needle = (is_array($needle))? $needle : array($needle); foreach ($needle as $item) if (in_array($item, $haystack)) return TRUE; return FALSE; // random_element() is included in Array Helper, so it overrides the native function function random_element($array) shuffle($array);

52 return array_pop($array); 나만의접두어설정하기 파일명의접두어는헬퍼에도쓰이지만, 라이브러리및코어클래스를확장할때에도쓰입니다. 나만의접두어를설정하려면 application/config/config.php 에서아래의아이템을찾은후설정하시면됩니다. $config['subclass_prefix'] = 'MY_'; 모든 CodeIgniter 내장라이브러리의접두어는 CI_ 이므로나만의접두어로사용할수없습니다. 이제뭐하지? 목차페이지에서다양한헬퍼를만나실수있습니다. 나만의라이브러리만들기 Creating Libraries 우리가라이브러리 (Libraries) 라고말할때는일반적으로 libraries 폴더안에위치하며본사용자가이드에설명되어있는그것을뜻합니다. 하지만여기서는그라이브러리가아니라님하가어떻게 application/libraries 저장될님하만의라이브러리를만들지를설명합니다. 또한그라이브러리를글로벌라이버러리와어떻게분리하여관리하는지도설명합니다. 보너스로 CodeIgniter 는기존의라이브러리를확장하여 ( extend) 님하만의라이브러리를만들수있도록지원합니다. 아니면이미내장된라이브러리를 application/libraries 에저장된동일한버전및이름의님하가만든라이브러리도대체할수도있습니다. 요약하자면 : 남하는완전히새로운라이브러리를만들수있습니다.. 내장된라이브러리를확장하여여러분만의라이브러리를만들수있습니다.. 내장된라이브러리를대체할수도있습니다.. 아래에설명된내용들은이러한 3 가지를어떻게할수있는지상세하게설명합니다.. Note: 데이터베이스클래스는확장되거나대체될수없습니다.PHP4 의로더 (Loader class) 클래스또한확장, 대체될수없습니다. 그외모든클래스는확장, 대체될수있습니다. 저장 님하의라이브러리는반드시 application/libraries 에위치해야합니다.CodeIgniter 가초기화과정에서그디렉토리를살펴보기때문입니다. 이름짓기관례 (Naming Conventions) 파일이름은반드시대문자로시작해야합니다. 예제 : Myclass.php 클래스선언부는반드시대문자로시작해야합니다. 예 : class Myclass 클래스명과파일명은반드시동일해야합니다. 클래스파일 클래스는반드시아래의프로토타입형태를따라야합니다.(Note: Someclass 이라는이름은예를든것입니다.):

53 <?php if (! defined('basepath')) exit('no direct script access allowed'); class Someclass?> function some_function() 여러분의클래스를사용하기 어떤여러분의콘트롤러함수에서도여러분의클래스를아래와같이초기화할수있습니다.: $this->load->library('someclass'); someclass 는파일이름이고 ".php" 확장자는붙이지않습니다.. 여기에서파일이름을대문자로쓰든소문자로쓰든 CodeIgniter 는상관하지않고인식합니다.. 일단로드되면여러분의클래스를 lower case 소문자버전으로사용해야합니다 : $this->someclass->some_function(); // 객체는항상소문자로사용되야합니다 여러분의클래스초기화과정에파라미터넘겨주기 라이브러리로드함수에서님하는두번째파라미터를통하여동적으로배열형태의데이터를넘겨줄수있습니다. 파라미터는님하만의클래스생성자에데이터를넘겨줄것입니다.: $params = array('type' => 'large', 'color' => 'red'); $this->load->library('someclass', $params); 이렇게사용하려면님하는반드시님하만의클래스생성자에파라미터를처리하는코드를삽입해야합니다.: <?php if (! defined('basepath')) exit('no direct script access allowed'); class Someclass?> function Someclass($params) // Do something with $params 여러분의 config 파일에저장된데이터를파라미터로전달할수있습니다.. 간단히클래스의파일이름과동일한 config 파일을생성하여 application/config/ 폴더안에저장하세요. 위에기술된대로동적으로파라미터를전달한다면 config 을이용하는방법은비활성 (will not be available) 화될것입니다. CodeIgniter 리소스를여러분의라이브러리와함께사용하기 직접만든라이브러리에서 CodeIgniter 에내장된리소스를이용하려면 get_instance() 함수를이용합니다. 그함수는 CodeIgniter 의부모객체 (super object) 를리턴합니다.

54 일반적으로당신이만든컨트롤러함수에서 $this 를사용하여 CodeIgniter 의가능한모든함수들을호출할것입니다.: $this->load->helper('url'); $this->load->library('session'); $this->config->item('base_url'); etc. 그러나 $this 는컨트롤러, 뷰, 모델에서만직접적으로사용할수있습니다. 만약당신이만든라이브러리 (custom class) 에서 CodeIgniter 의클래스를사용하고자한다면아래와같은방법으로해야합니다.: 먼저 CodeIgniter 객체를변수로할당합니다.: $CI =& get_instance(); 한번할당한후에는 $this 를썼던것대신에새로할당한변수 ($CI) 를대신사용하면됩니다 : $CI =& get_instance(); $CI->load->helper('url'); $CI->load->library('session'); $CI->config->item('base_url'); etc. Note: 위에사용된 get_instance() 는객체를참조로넘겨줍니다.(& 를주목할것 ): $CI =& get_instance(); 이것은매우중요합니다. 참조로넘겨준다는것은복사본이아니라원본의 CodeIgniter 객체를사용한다는것을의미합니다. 또한주의하세요 : PHP 4 를사용하신다면생성자에서 get_instance() 함수를호출하지마세요. PHP 4 에서는 CodeIgniter 의부모객체 (super object) 를생성자에서사용할때문제가발생합니다. 왜냐하면클래스가완전한인스턴스가되기전에는 CodeIgniter 객체가존재할수없기때문입니다.( 즉 PHP4 에서는클래스의생성자함수실행이완료된후에서야객체가존재하고객체가있어야다른객체를생성할수있기때문 ) 내장된라이브러리를나만의라이브러리로대체하기 Replacing Native Libraries with Your Versions 간단히당신의라이브러리이름을내장된라이브러리와완전히동일하게하면 CodeIgniter 는내장라이브러리대신당신의라이브러리를사용합니다. 이렇게하려면파일이름과클래스선언부를내장라이브러리와동일하게하면됩니다. 예를들어, 내장 라이브러리를대체하려면 application/libraries/ .php 파일을만들고클래스를아래와같이선언합니다. class CI_ 주의 : 대부분의내장라이브러리는접두어 CI_ 를사용합니다. 당신의라이브러리를로드하라면표준로딩함수를사용하면됩니다.: $this->load->library(' '); Note: Database 클래스는당신의라이브러리로대체될수없습니다.. 내장라이브러리의확장 Extending Native Libraries

55 내장라이브러리에몇몇기능요소들을추가하려한다면 ( 아마한두개의함수추가 ) 라이브러리자체를바꾸는것은심한오버헤드가될것입니다. 이럴때는간단히내장라이브러리를확장하는것이현명합니다. 라이브러리확장은몇가지를제외하고는라이브러리대체와거의비슷합니다. 클래스는부모클래스 (parent class) 를확장해야한다.. 당신의클래스이름및파일이름은 MY_ 로시작해야한다.( 이접두어는설정에서변경할수있습니다 ). 예를들어, 내장 클래스를확장하고자한다면 application/libraries/my_ .php 파일을생성하고클래스를아래와같이선언합니다 : class MY_ extends CI_ Note: 만약당신의클래스에서생성자를사용하고자한다면부모클래스의생성자를그내부에서호출해야한다는걸잊지마세요 : class MY_ extends CI_ function My_ () parent::ci_ (); 당신의확장클래스를로드하는법 (Loading Your Sub-class) 새롭게만든확장클래스는일반적인클래스로드와동일한방법으로로드합니다. 이때접두어는적으시면안됩니다.. 예를들어, 위의예에서만든 클래스의확장클래스를로드할때아래와같이합니다.: $this->load->library(' '); 한번로드한후에는다른일반적인방법 ( 확장하기전의원본클래스를사용하듯 ) 과동일하게사용하면됩니다. 위에서만든 클래스의경우아래와같이사용합니다.: $this-> ->some_function(); 나만의접두어설정 (Setting Your Own Prefix) 나만의접두어를설정하려면 application/config/config.php 파일을열어아래변수를찾으세요 : $config['subclass_prefix'] = 'MY_'; 주의 : 모든 CodeIgniter 내장라이브러리는접두어로 CI_ 를사용하므로위설정에서는 CI_ 를사용하지마세요. Quick Reference Chart For a PDF version of this chart, click here.

56 뷰 Views 간단히말하면뷰는웹페이지이거나헤더푸터같은웹페이지조각입니다. 사실, 뷰는유연하게다른뷰에삽입될수있습니

Page 2 of 6 Here are the rules for conjugating Whether (or not) and If when using a Descriptive Verb. The only difference here from Action Verbs is wh

Page 2 of 6 Here are the rules for conjugating Whether (or not) and If when using a Descriptive Verb. The only difference here from Action Verbs is wh Page 1 of 6 Learn Korean Ep. 13: Whether (or not) and If Let s go over how to say Whether and If. An example in English would be I don t know whether he ll be there, or I don t know if he ll be there.

More information

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 2012.11.23 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Document Distribution Copy Number Name(Role, Title) Date

More information

Page 2 of 5 아니다 means to not be, and is therefore the opposite of 이다. While English simply turns words like to be or to exist negative by adding not,

Page 2 of 5 아니다 means to not be, and is therefore the opposite of 이다. While English simply turns words like to be or to exist negative by adding not, Page 1 of 5 Learn Korean Ep. 4: To be and To exist Of course to be and to exist are different verbs, but they re often confused by beginning students when learning Korean. In English we sometimes use the

More information

Microsoft Word - windows server 2003 수동설치_non pro support_.doc

Microsoft Word - windows server 2003 수동설치_non pro support_.doc Windows Server 2003 수동 설치 가이드 INDEX 운영체제 설치 준비과정 1 드라이버를 위한 플로피 디스크 작성 2 드라이버를 위한 USB 메모리 작성 7 운영체제 설치 과정 14 Boot Sequence 변경 14 컨트롤러 드라이버 수동 설치 15 운영체제 설치 17 운영체제 설치 준비 과정 Windows Server 2003 에는 기본적으로

More information

Microsoft PowerPoint 웹 연동 기술.pptx

Microsoft PowerPoint 웹 연동 기술.pptx 웹프로그래밍및실습 ( g & Practice) 문양세강원대학교 IT 대학컴퓨터과학전공 URL 분석 (1/2) URL (Uniform Resource Locator) 프로토콜, 호스트, 포트, 경로, 비밀번호, User 등의정보를포함 예. http://kim:3759@www.hostname.com:80/doc/index.html URL 을속성별로분리하고자할경우

More information

C# Programming Guide - Types

C# Programming Guide - Types C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든

More information

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher( 실행할페이지.jsp); 다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp"); dispatcher.forward(request, response); - 위의예에서와같이 RequestDispatcher

More information

PowerPoint Template

PowerPoint Template JavaScript 회원정보 입력양식만들기 HTML & JavaScript Contents 1. Form 객체 2. 일반적인입력양식 3. 선택입력양식 4. 회원정보입력양식만들기 2 Form 객체 Form 객체 입력양식의틀이되는 태그에접근할수있도록지원 Document 객체의하위에위치 속성들은모두 태그의속성들의정보에관련된것

More information

Chapter 1

Chapter 1 3 Oracle 설치 Objectives Download Oracle 11g Release 2 Install Oracle 11g Release 2 Download Oracle SQL Developer 4.0.3 Install Oracle SQL Developer 4.0.3 Create a database connection 2 Download Oracle 11g

More information

Output file

Output file 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 An Application for Calculation and Visualization of Narrative Relevance of Films Using Keyword Tags Choi Jin-Won (KAIST) Film making

More information

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일 Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 Introduce Me!!! Job Jeju National University Student Ubuntu Korean Jeju Community Owner E-Mail: ned3y2k@hanmail.net Blog: http://ned3y2k.wo.tc Facebook: http://www.facebook.com/gyeongdae

More information

untitled

untitled Push... 2 Push... 4 Push... 5 Push... 13 Push... 15 1 FORCS Co., LTD A Leader of Enterprise e-business Solution Push (Daemon ), Push Push Observer. Push., Observer. Session. Thread Thread. Observer ID.

More information

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자 SQL Developer Connect to TimesTen 유니원아이앤씨 DB 팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 2010-07-28 작성자 김학준 최종수정일 2010-07-28 문서번호 20100728_01_khj 재개정이력 일자내용수정인버전

More information

DocsPin_Korean.pages

DocsPin_Korean.pages Unity Localize Script Service, Page 1 Unity Localize Script Service Introduction Application Game. Unity. Google Drive Unity.. Application Game. -? ( ) -? -?.. 준비사항 Google Drive. Google Drive.,.. - Google

More information

RHEV 2.2 인증서 만료 확인 및 갱신

RHEV 2.2 인증서 만료 확인 및 갱신 2018/09/28 03:56 1/2 목차... 1 인증서 확인... 1 인증서 종류와 확인... 4 RHEVM CA... 5 FQDN 개인 인증서... 5 레드햇 인증서 - 코드 서명 인증서... 6 호스트 인증... 7 참고사항... 8 관련링크... 8 AllThatLinux! - http://allthatlinux.com/dokuwiki/ rhev_2.2_

More information

0125_ 워크샵 발표자료_완성.key

0125_ 워크샵 발표자료_완성.key WordPress is a free and open-source content management system (CMS) based on PHP and MySQL. WordPress is installed on a web server, which either is part of an Internet hosting service or is a network host

More information

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate ALTIBASE HDB 6.1.1.5.6 Patch Notes 목차 BUG-39240 offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG-41443 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate 한뒤, hash partition

More information

LXR 설치 및 사용법.doc

LXR 설치 및 사용법.doc Installation of LXR (Linux Cross-Reference) for Source Code Reference Code Reference LXR : 2002512( ), : 1/1 1 3 2 LXR 3 21 LXR 3 22 LXR 221 LXR 3 222 LXR 3 3 23 LXR lxrconf 4 24 241 httpdconf 6 242 htaccess

More information

ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O

ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O Orange for ORACLE V4.0 Installation Guide ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE...1 1....2 1.1...2 1.2...2 1.2.1...2 1.2.2 (Online Upgrade)...11 1.3 ORANGE CONFIGURATION ADMIN...12 1.3.1 Orange Configuration

More information

PowerChute Personal Edition v3.1.0 에이전트 사용 설명서

PowerChute Personal Edition v3.1.0 에이전트 사용 설명서 PowerChute Personal Edition v3.1.0 990-3772D-019 4/2019 Schneider Electric IT Corporation Schneider Electric IT Corporation.. Schneider Electric IT Corporation,,,.,. Schneider Electric IT Corporation..

More information

0. 들어가기 전

0. 들어가기 전 컴퓨터네트워크 14 장. 웹 (WWW) (3) - HTTP 1 이번시간의학습목표 HTTP 의요청 / 응답메시지의구조와동작원리이해 2 요청과응답 (1) HTTP (HyperText Transfer Protocol) 웹브라우저는 URL 을이용원하는자원표현 HTTP 메소드 (method) 를이용하여데이터를요청 (GET) 하거나, 회신 (POST) 요청과응답 요청

More information

Tcl의 문법

Tcl의 문법 월, 01/28/2008-20:50 admin 은 상당히 단순하고, 커맨드의 인자를 스페이스(공백)로 단락을 짓고 나열하는 정도입니다. command arg1 arg2 arg3... 한행에 여러개의 커맨드를 나열할때는, 세미콜론( ; )으로 구분을 짓습니다. command arg1 arg2 arg3... ; command arg1 arg2 arg3... 한행이

More information

MySQL-.. 1

MySQL-.. 1 MySQL- 기초 1 Jinseog Kim Dongguk University jinseog.kim@gmail.com 2017-08-25 Jinseog Kim Dongguk University jinseog.kim@gmail.com MySQL-기초 1 2017-08-25 1 / 18 SQL의 기초 SQL은 아래의 용도로 구성됨 데이터정의 언어(Data definition

More information

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

CD-RW_Advanced.PDF

CD-RW_Advanced.PDF HP CD-Writer Program User Guide - - Ver. 2.0 HP CD-RW Adaptec Easy CD Creator Copier, Direct CD. HP CD-RW,. Easy CD Creator 3.5C, Direct CD 3.0., HP. HP CD-RW TEAM ( 02-3270-0803 ) < > 1. CD...3 CD...5

More information

슬라이드 1

슬라이드 1 Pairwise Tool & Pairwise Test NuSRS 200511305 김성규 200511306 김성훈 200614164 김효석 200611124 유성배 200518036 곡진화 2 PICT Pairwise Tool - PICT Microsoft 의 Command-line 기반의 Free Software www.pairwise.org 에서다운로드후설치

More information

ISP and CodeVisionAVR C Compiler.hwp

ISP and CodeVisionAVR C Compiler.hwp USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler http://www.avrmall.com/ November 12, 2007 Copyright (c) 2003-2008 All Rights Reserved. USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler

More information

Web Scraper in 30 Minutes 강철

Web Scraper in 30 Minutes 강철 Web Scraper in 30 Minutes 강철 발표자 소개 KAIST 전산학과 2015년부터 G사에서 일합니다. 에서 대한민국 정치의 모든 것을 개발하고 있습니다. 목표 웹 스크래퍼를 프레임웍 없이 처음부터 작성해 본다. 목표 웹 스크래퍼를 프레임웍 없이 처음부터 작성해 본다. 스크래퍼/크롤러의 작동 원리를 이해한다. 목표

More information

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 객체지향프로그래밍 IT CookBook, 자바로배우는쉬운자료구조 q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 q 객체지향프로그래밍의이해 v 프로그래밍기법의발달 A 군의사업발전 1 단계 구조적프로그래밍방식 3 q 객체지향프로그래밍의이해 A 군의사업발전 2 단계 객체지향프로그래밍방식 4 q 객체지향프로그래밍의이해 v 객체란무엇인가

More information

MVVM 패턴의 이해

MVVM 패턴의 이해 Seo Hero 요약 joshua227.tistory. 2014 년 5 월 13 일 이문서는 WPF 어플리케이션개발에필요한 MVVM 패턴에대한내용을담고있다. 1. Model-View-ViewModel 1.1 기본개념 MVVM 모델은 MVC(Model-View-Contorl) 패턴에서출발했다. MVC 패턴은전체 project 를 model, view 로나누어

More information

Intro to Servlet, EJB, JSP, WS

Intro to Servlet, EJB, JSP, WS ! Introduction to J2EE (2) - EJB, Web Services J2EE iseminar.. 1544-3355 ( ) iseminar Chat. 1 Who Are We? Business Solutions Consultant Oracle Application Server 10g Business Solutions Consultant Oracle10g

More information

Social Network

Social Network Social Network Service, Social Network Service Social Network Social Network Service from Digital Marketing Internet Media : SNS Market report A social network service is a social software specially focused

More information

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D313939392D382E687770>

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D313939392D382E687770> i ii iii iv v vi 1 2 3 4 가상대학 시스템의 국내외 현황 조사 가상대학 플랫폼 개발 이상적인 가상대학시스템의 미래상 제안 5 웹-기반 가상대학 시스템 전통적인 교수 방법 시간/공간 제약을 극복한 학습동기 부여 교수의 일방적인 내용전달 교수와 학생간의 상호작용 동료 학생들 간의 상호작용 가상대학 운영 공지사항,강의록 자료실, 메모 질의응답,

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 2... ( ). ( ). @ vs. logic data method variable behavior attribute method field Flow (Type), ( ) member @ () : C program Method A ( ) Method B ( ) Method C () program : Java, C++, C# data @ Program

More information

U.Tu System Application DW Service AGENDA 1. 개요 4. 솔루션 모음 1.1. 제안의 배경 및 목적 4.1. 고객정의 DW구축에 필요한 메타정보 생성 1.2. 제품 개요 4.2. 사전 변경 관리 1.3. 제품 특장점 4.3. 부품화형

U.Tu System Application DW Service AGENDA 1. 개요 4. 솔루션 모음 1.1. 제안의 배경 및 목적 4.1. 고객정의 DW구축에 필요한 메타정보 생성 1.2. 제품 개요 4.2. 사전 변경 관리 1.3. 제품 특장점 4.3. 부품화형 AGENDA 1. 개요 4. 솔루션 모음 1.1. 제안의 배경 및 목적 4.1. 고객정의 DW구축에 필요한 메타정보 생성 1.2. 제품 개요 4.2. 사전 변경 관리 1.3. 제품 특장점 4.3. 부품화형 언어 변환 1.4. 기대 효과 4.4. 프로그램 Restructuring 4.5. 소스 모듈 관리 2. SeeMAGMA 적용 전략 2.1. SeeMAGMA

More information

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3 Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3 Example 3.1 Files 3.2 Source code 3.3 Exploit flow

More information

Install stm32cubemx and st-link utility

Install stm32cubemx and st-link utility STM32CubeMX and ST-LINK Utility for STM32 Development 본문서는 ST Microelectronics 의 ARM Cortex-M 시리즈 Microcontroller 개발을위해제공되는 STM32CubeMX 와 STM32 ST-LINK Utility 프로그램의설치과정을설명합니다. 본문서는 Microsoft Windows 7

More information

본문01

본문01 Ⅱ 논술 지도의 방법과 실제 2. 읽기에서 논술까지 의 개발 배경 읽기에서 논술까지 자료집 개발의 본래 목적은 초 중 고교 학교 평가에서 서술형 평가 비중이 2005 학년도 30%, 2006학년도 40%, 2007학년도 50%로 확대 되고, 2008학년도부터 대학 입시에서 논술 비중이 커지면서 논술 교육은 학교가 책임진다. 는 풍토 조성으로 공교육의 신뢰성과

More information

Microsoft Word - src.doc

Microsoft Word - src.doc IPTV 서비스탐색및콘텐츠가이드 RI 시스템운용매뉴얼 목차 1. 서버설정방법... 5 1.1. 서비스탐색서버설정... 5 1.2. 컨텐츠가이드서버설정... 6 2. 서버운용방법... 7 2.1. 서비스탐색서버운용... 7 2.1.1. 서비스가이드서버실행... 7 2.1.2. 서비스가이드정보확인... 8 2.1.3. 서비스가이드정보추가... 9 2.1.4. 서비스가이드정보삭제...

More information

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Crash Unity SDK... Log & Crash Search. - Unity3D v4.0 ios

More information

11¹Ú´ö±Ô

11¹Ú´ö±Ô A Review on Promotion of Storytelling Local Cultures - 265 - 2-266 - 3-267 - 4-268 - 5-269 - 6 7-270 - 7-271 - 8-272 - 9-273 - 10-274 - 11-275 - 12-276 - 13-277 - 14-278 - 15-279 - 16 7-280 - 17-281 -

More information

Microsoft Word - FunctionCall

Microsoft Word - FunctionCall Function all Mechanism /* Simple Program */ #define get_int() IN KEYOARD #define put_int(val) LD A val \ OUT MONITOR int add_two(int a, int b) { int tmp; tmp = a+b; return tmp; } local auto variable stack

More information

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호 제이쿼리 () 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호 CSS와마찬가지로, 문서에존재하는여러엘리먼트를접근할수있다. 엘리먼트접근방법 $( 엘리먼트 ) : 일반적인접근방법

More information

17장 클래스와 메소드

17장 클래스와 메소드 17 장클래스와메소드 박창이 서울시립대학교통계학과 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 1 / 18 학습내용 객체지향특징들객체출력 init 메소드 str 메소드연산자재정의타입기반의버전다형성 (polymorphism) 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 2 / 18 객체지향특징들 객체지향프로그래밍의특징 프로그램은객체와함수정의로구성되며대부분의계산은객체에대한연산으로표현됨객체의정의는

More information

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r Jakarta is a Project of the Apache

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Reasons for Poor Performance Programs 60% Design 20% System 2.5% Database 17.5% Source: ORACLE Performance Tuning 1 SMS TOOL DBA Monitoring TOOL Administration TOOL Performance Insight Backup SQL TUNING

More information

본교재는수업용으로제작된게시물입니다. 영리목적으로사용할경우저작권법제 30 조항에의거법적처벌을받을수있습니다. [ 실습 ] 스위치장비초기화 1. NVRAM 에저장되어있는 'startup-config' 파일이있다면, 삭제를실시한다. SWx>enable SWx#erase sta

본교재는수업용으로제작된게시물입니다. 영리목적으로사용할경우저작권법제 30 조항에의거법적처벌을받을수있습니다. [ 실습 ] 스위치장비초기화 1. NVRAM 에저장되어있는 'startup-config' 파일이있다면, 삭제를실시한다. SWx>enable SWx#erase sta [ 실습 ] 스위치장비초기화 1. NVRAM 에저장되어있는 'startup-config' 파일이있다면, 삭제를실시한다. SWx>enable SWx#erase startup-config Erasing the nvram filesystem will remove all configuration files Continue? [confirm] ( 엔터 ) [OK] Erase

More information

Microsoft Word - Armjtag_문서1.doc

Microsoft Word - Armjtag_문서1.doc ARM JTAG (wiggler 호환 ) 사용방법 ( IAR EWARM 에서 ARM-JTAG 로 Debugging 하기 ) Test Board : AT91SAM7S256 IAR EWARM : Kickstart for ARM ARM-JTAG : ver 1.0 ( 씨링크테크 ) 1. IAR EWARM (Kickstart for ARM) 설치 2. Macraigor

More information

Research & Technique Apache Tomcat RCE 취약점 (CVE ) 취약점개요 지난 4월 15일전세계적으로가장많이사용되는웹애플리케이션서버인 Apache Tomcat에서 RCE 취약점이공개되었다. CVE 취약점은 W

Research & Technique Apache Tomcat RCE 취약점 (CVE ) 취약점개요 지난 4월 15일전세계적으로가장많이사용되는웹애플리케이션서버인 Apache Tomcat에서 RCE 취약점이공개되었다. CVE 취약점은 W Research & Technique Apache Tomcat RCE 취약점 (CVE-2019-0232) 취약점개요 지난 4월 15일전세계적으로가장많이사용되는웹애플리케이션서버인 Apache Tomcat에서 RCE 취약점이공개되었다. CVE-2019-0232 취약점은 Windows 시스템의 Apache Tomcat 서버에서 enablecmdlinearguments

More information

DE1-SoC Board

DE1-SoC Board 실습 1 개발환경 DE1-SoC Board Design Tools - Installation Download & Install Quartus Prime Lite Edition http://www.altera.com/ Quartus Prime (includes Nios II EDS) Nios II Embedded Design Suite (EDS) is automatically

More information

DIY 챗봇 - LangCon

DIY 챗봇 - LangCon without Chatbot Builder & Deep Learning bage79@gmail.com Chatbot Builder (=Dialogue Manager),. We need different chatbot builders for various chatbot services. Chatbot builders can t call some external

More information

리눅스설치가이드 3. 3Rabbitz Book 을리눅스에서설치하기위한절차는다음과같습니다. 설치에대한예시는우분투서버 기준으로진행됩니다. 1. Java Development Kit (JDK) 또는 Java Runtime Environment (JRE) 를설치합니다. 2.

리눅스설치가이드 3. 3Rabbitz Book 을리눅스에서설치하기위한절차는다음과같습니다. 설치에대한예시는우분투서버 기준으로진행됩니다. 1. Java Development Kit (JDK) 또는 Java Runtime Environment (JRE) 를설치합니다. 2. 3. 3Rabbitz Book 을리눅스에서설치하기위한절차는다음과같습니다. 설치에대한예시는우분투서버 기준으로진행됩니다. 1. Java Development Kit (JDK) 또는 Java Runtime Environment (JRE) 를설치합니다. 2. 3Rabbitz Book 애플리케이션파일다운로드하여압축파일을풀고복사합니다. 3. 3Rabbitz Book 실행합니다.

More information

Tablespace On-Offline 테이블스페이스 온라인/오프라인

Tablespace On-Offline 테이블스페이스 온라인/오프라인 2018/11/10 12:06 1/2 Tablespace On-Offline 테이블스페이스온라인 / 오프라인 목차 Tablespace On-Offline 테이블스페이스온라인 / 오프라인... 1 일반테이블스페이스 (TABLESPACE)... 1 일반테이블스페이스생성하기... 1 테이블스페이스조회하기... 1 테이블스페이스에데이터파일 (DATA FILE) 추가

More information

PowerPoint Presentation

PowerPoint Presentation FORENSICINSIGHT SEMINAR SQLite Recovery zurum herosdfrc@google.co.kr Contents 1. SQLite! 2. SQLite 구조 3. 레코드의삭제 4. 삭제된영역추적 5. 레코드복원기법 forensicinsight.org Page 2 / 22 SQLite! - What is.. - and why? forensicinsight.org

More information

제11장 프로세스와 쓰레드

제11장 프로세스와 쓰레드 제9장자바쓰레드 9.1 Thread 기초 (1/5) 프로그램 명령어들의연속 (a sequence of instruction) 프로세스 / Thread 실행중인프로그램 (program in execution) 프로세스생성과실행을위한함수들 자바 Thread 2 9.1 Thread 기초 (2/5) 프로세스단위작업의문제점 프로세스생성시오버헤드 컨텍스트스위치오버헤드

More information

APOGEE Insight_KR_Base_3P11

APOGEE Insight_KR_Base_3P11 Technical Specification Sheet Document No. 149-332P25 September, 2010 Insight 3.11 Base Workstation 그림 1. Insight Base 메인메뉴 Insight Base Insight Insight Base, Insight Base Insight Base Insight Windows

More information

var answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");

var answer = confirm( 확인이나취소를누르세요.); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write( 확인을눌렀습니다.); else { document.write( 취소를눌렀습니다.); 자바스크립트 (JavaScript) - HTML 은사용자에게인터페이스 (interface) 를제공하는언어 - 자바스크립트는서버로데이터를전송하지않고서할수있는데이터처리를수행한다. - 자바스크립트는 HTML 나 JSP 에서작성할수있고 ( 내부스크립트 ), 별도의파일로도작성이가능하다 ( 외 부스크립트 ). - 내부스크립트 - 외부스크립트

More information

C++ Programming

C++ Programming C++ Programming 예외처리 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 예외처리 2 예외처리 예외처리 C++ 의예외처리 예외클래스와객체 3 예외처리 예외를처리하지않는프로그램 int main() int a, b; cout > a >> b; cout

More information

PowerPoint Presentation

PowerPoint Presentation Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음

More information

Remote UI Guide

Remote UI Guide Remote UI KOR Remote UI Remote UI PDF Adobe Reader/Adobe Acrobat Reader. Adobe Reader/Adobe Acrobat Reader Adobe Systems Incorporated.. Canon. Remote UI GIF Adobe Systems Incorporated Photoshop. ..........................................................

More information

강의10

강의10 Computer Programming gdb and awk 12 th Lecture 김현철컴퓨터공학부서울대학교 순서 C Compiler and Linker 보충 Static vs Shared Libraries ( 계속 ) gdb awk Q&A Shared vs Static Libraries ( 계속 ) Advantage of Using Libraries Reduced

More information

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE ALTIBASE HDB 6.3.1.10.1 Patch Notes 목차 BUG-45710 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG-45730 ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG-45760 ROLLUP/CUBE 절을포함하는질의는 SUBQUERY REMOVAL 변환을수행하지않도록수정합니다....

More information

<32382DC3BBB0A2C0E5BED6C0DA2E687770>

<32382DC3BBB0A2C0E5BED6C0DA2E687770> 논문접수일 : 2014.12.20 심사일 : 2015.01.06 게재확정일 : 2015.01.27 청각 장애자들을 위한 보급형 휴대폰 액세서리 디자인 프로토타입 개발 Development Prototype of Low-end Mobile Phone Accessory Design for Hearing-impaired Person 주저자 : 윤수인 서경대학교 예술대학

More information

step 1-1

step 1-1 Written by Dr. In Ku Kim-Marshall STEP BY STEP Korean 1 through 15 Action Verbs Table of Contents Unit 1 The Korean Alphabet, hangeul Unit 2 Korean Sentences with 15 Action Verbs Introduction Review Exercises

More information

사용시 기본적인 주의사항 경고 : 전기 기구를 사용할 때는 다음의 기본적인 주의 사항을 반드시 유의하여야 합니다..제품을 사용하기 전에 반드시 사용법을 정독하십시오. 2.물과 가까운 곳, 욕실이나 부엌 그리고 수영장 같은 곳에서 제품을 사용하지 마십시오. 3.이 제품은

사용시 기본적인 주의사항 경고 : 전기 기구를 사용할 때는 다음의 기본적인 주의 사항을 반드시 유의하여야 합니다..제품을 사용하기 전에 반드시 사용법을 정독하십시오. 2.물과 가까운 곳, 욕실이나 부엌 그리고 수영장 같은 곳에서 제품을 사용하지 마십시오. 3.이 제품은 OPERATING INSTRUCTIONS OPERATING INSTRUCTIONS 사용자설명서 TourBus 0 & TourBus 5 사용시 기본적인 주의사항 경고 : 전기 기구를 사용할 때는 다음의 기본적인 주의 사항을 반드시 유의하여야 합니다..제품을 사용하기 전에 반드시 사용법을 정독하십시오. 2.물과 가까운 곳, 욕실이나 부엌 그리고 수영장 같은 곳에서

More information

Microsoft PowerPoint - chap01-C언어개요.pptx

Microsoft PowerPoint - chap01-C언어개요.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 프로그래밍의 기본 개념을

More information

<BCF6BDC3323030392D31385FB0EDBCD3B5B5B7CEC8DEB0D4C5B8BFEEB5B5C0D4B1B8BBF3BFACB1B85FB1C7BFB5C0CE2E687770>

<BCF6BDC3323030392D31385FB0EDBCD3B5B5B7CEC8DEB0D4C5B8BFEEB5B5C0D4B1B8BBF3BFACB1B85FB1C7BFB5C0CE2E687770> ... 수시연구 2009-18.. 고속도로 휴게타운 도입구상 연구 A Study on the Concept of Service Town at the Expressway Service Area... 권영인 임재경 이창운... 서 문 우리나라는 경제성장과 함께 도시화가 지속적으로 진행되어 지방 지역의 인구감소와 경기의 침체가 계속되고 있습니다. 정부의 다각 적인

More information

DBMS & SQL Server Installation Database Laboratory

DBMS & SQL Server Installation Database Laboratory DBMS & 조교 _ 최윤영 } 데이터베이스연구실 (1314 호 ) } 문의사항은 cyy@hallym.ac.kr } 과제제출은 dbcyy1@gmail.com } 수업공지사항및자료는모두홈페이지에서확인 } dblab.hallym.ac.kr } 홈페이지 ID: 학번 } 홈페이지 PW:s123 2 차례 } } 설치전점검사항 } 설치단계별설명 3 Hallym Univ.

More information

제8장 자바 GUI 프로그래밍 II

제8장 자바 GUI 프로그래밍 II 제8장 MVC Model 8.1 MVC 모델 (1/7) MVC (Model, View, Controller) 모델 스윙은 MVC 모델에기초를두고있다. MVC란 Xerox의연구소에서 Smalltalk 언어를바탕으로사용자인터페이스를개발하기위한방법 MVC는 3개의구성요소로구성 Model : 응용프로그램의자료를표현하기위한모델 View : 자료를시각적으로 (GUI 방식으로

More information

USER GUIDE

USER GUIDE Solution Package Volume II DATABASE MIGRATION 2010. 1. 9. U.Tu System 1 U.Tu System SeeMAGMA SYSTEM 차 례 1. INPUT & OUTPUT DATABASE LAYOUT...2 2. IPO 중 VB DATA DEFINE 자동작성...4 3. DATABASE UNLOAD...6 4.

More information

Portal_9iAS.ppt [읽기 전용]

Portal_9iAS.ppt [읽기 전용] Application Server iplatform Oracle9 A P P L I C A T I O N S E R V E R i Oracle9i Application Server e-business Portal Client Database Server e-business Portals B2C, B2B, B2E, WebsiteX B2Me GUI ID B2C

More information

04-다시_고속철도61~80p

04-다시_고속철도61~80p Approach for Value Improvement to Increase High-speed Railway Speed An effective way to develop a highly competitive system is to create a new market place that can create new values. Creating tools and

More information

지능정보연구제 16 권제 1 호 2010 년 3 월 (pp.71~92),.,.,., Support Vector Machines,,., KOSPI200.,. * 지능정보연구제 16 권제 1 호 2010 년 3 월

지능정보연구제 16 권제 1 호 2010 년 3 월 (pp.71~92),.,.,., Support Vector Machines,,., KOSPI200.,. * 지능정보연구제 16 권제 1 호 2010 년 3 월 지능정보연구제 16 권제 1 호 2010 년 3 월 (pp.71~92),.,.,., Support Vector Machines,,., 2004 5 2009 12 KOSPI200.,. * 2009. 지능정보연구제 16 권제 1 호 2010 년 3 월 김선웅 안현철 社 1), 28 1, 2009, 4. 1. 지능정보연구제 16 권제 1 호 2010 년 3 월 Support

More information

Interstage5 SOAP서비스 설정 가이드

Interstage5 SOAP서비스 설정 가이드 Interstage 5 Application Server ( Solaris ) SOAP Service Internet Sample Test SOAP Server Application SOAP Client Application CORBA/SOAP Server Gateway CORBA/SOAP Gateway Client INTERSTAGE SOAP Service

More information

adfasdfasfdasfasfadf

adfasdfasfdasfasfadf C 4.5 Source code Pt.3 ISL / 강한솔 2019-04-10 Index Tree structure Build.h Tree.h St-thresh.h 2 Tree structure *Concpets : Node, Branch, Leaf, Subtree, Attribute, Attribute Value, Class Play, Don't Play.

More information

Windows Server 2012

Windows Server  2012 Windows Server 2012 Shared Nothing Live Migration Shared Nothing Live Migration 은 SMB Live Migration 방식과다른점은 VM 데이터파일의위치입니다. Shared Nothing Live Migration 방식은 Hyper-V 호스트의로컬디스크에 VM 데이터파일이위치합니다. 반면에, SMB

More information

K7VT2_QIG_v3

K7VT2_QIG_v3 1......... 2 3..\ 4 5 [R] : Enter Raid setup utility 6 Press[A]keytocreateRAID RAID Type: JBOD RAID 0 RAID 1: 2 7 " RAID 0 Auto Create Manual Create: 2 RAID 0 Block Size: 16K 32K

More information

슬라이드 1

슬라이드 1 전자정부개발프레임워크 1 일차실습 LAB 개발환경 - 1 - 실습목차 LAB 1-1 프로젝트생성실습 LAB 1-2 Code Generation 실습 LAB 1-3 DBIO 실습 ( 별첨 ) LAB 1-4 공통컴포넌트생성및조립도구실습 LAB 1-5 템플릿프로젝트생성실습 - 2 - LAB 1-1 프로젝트생성실습 (1/2) Step 1-1-01. 구현도구에서 egovframe>start>new

More information

<31332DB9E9C6AEB7A2C7D8C5B72D3131C0E528BACEB7CF292E687770>

<31332DB9E9C6AEB7A2C7D8C5B72D3131C0E528BACEB7CF292E687770> 보자. 이제 v4.6.2-1 로업데이트됐다. 그림 F-15의하단처럼 msfupdate를입력해 root @bt:~# msfudpate 그림 F-16 과같이정상적으로업데이트가진행되는것을볼수있다. 이후에는 msfupdate를입력하면최신업데이트모듈과공격코드를쉽게유지할수있다. 그림 F-16 msfupdate의진행확인 G. SET 업데이트문제해결 백트랙을기본설치로운영을할때에는

More information

소개 TeraStation 을 구입해 주셔서 감사합니다! 이 사용 설명서는 TeraStation 구성 정보를 제공합니다. 제품은 계속 업데이트되므로, 이 설명서의 이미지 및 텍스트는 사용자가 보유 중인 TeraStation 에 표시 된 이미지 및 텍스트와 약간 다를 수

소개 TeraStation 을 구입해 주셔서 감사합니다! 이 사용 설명서는 TeraStation 구성 정보를 제공합니다. 제품은 계속 업데이트되므로, 이 설명서의 이미지 및 텍스트는 사용자가 보유 중인 TeraStation 에 표시 된 이미지 및 텍스트와 약간 다를 수 사용 설명서 TeraStation Pro II TS-HTGL/R5 패키지 내용물: 본체 (TeraStation) 이더넷 케이블 전원 케이블 TeraNavigator 설치 CD 사용 설명서 (이 설명서) 제품 보증서 www.buffalotech.com 소개 TeraStation 을 구입해 주셔서 감사합니다! 이 사용 설명서는 TeraStation 구성 정보를

More information

<B1E2C8B9BEC828BFCFBCBAC1F7C0FC29322E687770>

<B1E2C8B9BEC828BFCFBCBAC1F7C0FC29322E687770> 맛있는 한국으로의 초대 - 중화권 음식에서 한국 음식의 관광 상품화 모색하기 - 소속학교 : 한국외국어대학교 지도교수 : 오승렬 교수님 ( 중국어과) 팀 이 름 : 飮 食 男 女 ( 음식남녀) 팀 원 : 이승덕 ( 중국어과 4) 정진우 ( 중국어과 4) 조정훈 ( 중국어과 4) 이민정 ( 중국어과 3) 탐방목적 1. 한국 음식이 가지고 있는 장점과 경제적 가치에도

More information

¹Ìµå¹Ì3Â÷Àμâ

¹Ìµå¹Ì3Â÷Àμâ MIDME LOGISTICS Trusted Solutions for 02 CEO MESSAGE MIDME LOGISTICS CO., LTD. 01 Ceo Message We, MIDME LOGISTICS CO., LTD. has established to create aduance logistics service. Try to give confidence to

More information

UNIST_교원 홈페이지 관리자_Manual_V1.0

UNIST_교원 홈페이지 관리자_Manual_V1.0 Manual created by metapresso V 1.0 3Fl, Dongin Bldg, 246-3 Nonhyun-dong, Kangnam-gu, Seoul, Korea, 135-889 Tel: (02)518-7770 / Fax: (02)547-7739 / Mail: contact@metabrain.com / http://www.metabrain.com

More information

bn2019_2

bn2019_2 arp -a Packet Logging/Editing Decode Buffer Capture Driver Logging: permanent storage of packets for offline analysis Decode: packets must be decoded to human readable form. Buffer: packets must temporarily

More information

XSS Attack - Real-World XSS Attacks, Chaining XSS and Other Attacks, Payloads for XSS Attacks

XSS Attack - Real-World XSS Attacks, Chaining XSS and Other Attacks, Payloads for XSS Attacks XSS s XSS, s, May 25, 2010 XSS s 1 2 s 3 XSS s MySpace 사건. Samy (JS.Spacehero) 프로필 페이지에 자바스크립트 삽입. 스크립트 동작방식 방문자를 친구로 추가. 방문자의 프로필에 자바스크립트를 복사. 1시간 만에 백만 명이 친구등록. s XSS s 위험도가 낮은 xss 취약점을 다른 취약점과 연계하여

More information

Domino Designer Portal Development tools Rational Application Developer WebSphere Portlet Factory Workplace Designer Workplace Forms Designer

Domino Designer Portal Development tools Rational Application Developer WebSphere Portlet Factory Workplace Designer Workplace Forms Designer Domino, Portal & Workplace WPLC FTSS Domino Designer Portal Development tools Rational Application Developer WebSphere Portlet Factory Workplace Designer Workplace Forms Designer ? Lotus Notes Clients

More information

<4D F736F F F696E74202D20B5A5C0CCC5CDBAA3C0CCBDBA5F3130C1D6C2F75F32C2F7BDC32E >

<4D F736F F F696E74202D20B5A5C0CCC5CDBAA3C0CCBDBA5F3130C1D6C2F75F32C2F7BDC32E > 6. ASP.NET ASP.NET 소개 ASP.NET 페이지및응용프로그램구조 Server Controls 데이터베이스와연동 8 장. 데이터베이스응용개발 (Page 20) 6.1 ASP.NET 소개 ASP.NET 동적웹응용프로그램을개발하기위한 MS 의웹기술 현재 ASP.NET 4.5까지출시.Net Framework 4.5 에포함 Visual Studio 2012

More information

Microsoft Word - How to make a ZigBee Network_kr

Microsoft Word - How to make a ZigBee Network_kr 1 단계 ZigBee 네트워크설정방법 이보기는 ProBee 기기를이용해 ZigBee 네트워크를설정하는방법을보여줍니다. 2 단계 이보기에서사용된 SENA 제품입니다 : ProBee ZE10 Starter Kit ProBee ZS10 ProBee ZU10 3 단계 ZigBee 네트워크입니다. SE1 SE2 SE3 ZS10 ZS10 ZS10 R4 R5 R3 R1

More information

DBPIA-NURIMEDIA

DBPIA-NURIMEDIA 김진주 김수연. 초등학생대상장애이해교육에활용된동화에나타난장애인관분석. 특수교육, 2013, 제12권, 제2호, 135-160... 20.,,. 4.,,.,..... 주제어 : 장애이해교육, 동화, 장애인관 1. ( 1 ) Incheon Munhak Elementary School ( )(, E-mail: sooyoun@ginue.ac.kr) Dept. of

More information

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 )

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 ) 8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 ) - DDL(Data Definition Language) : show, create, drop

More information

JUNIT 실습및발표

JUNIT 실습및발표 JUNIT 실습및발표 JUNIT 접속 www.junit.org DownLoad JUnit JavaDoc API Document 를참조 JUNIT 4.8.1 다운로드 설치파일 (jar 파일 ) 을다운로드 CLASSPATH 를설정 환경변수에서설정 실행할클래스에서 import JUnit 설치하기 테스트실행주석 @Test Test 를실행할 method 앞에붙임 expected

More information

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc NTAS and FRAME BUILDER Install Guide NTAS and FRAME BUILDER Version 2.5 Copyright 2003 Ari System, Inc. All Rights reserved. NTAS and FRAME BUILDER are trademarks or registered trademarks of Ari System,

More information

gnu-lee-oop-kor-lec06-3-chap7

gnu-lee-oop-kor-lec06-3-chap7 어서와 Java 는처음이지! 제 7 장상속 Super 키워드 상속과생성자 상속과다형성 서브클래스의객체가생성될때, 서브클래스의생성자만호출될까? 아니면수퍼클래스의생성자도호출되는가? class Base{ public Base(String msg) { System.out.println("Base() 생성자 "); ; class Derived extends Base

More information

<B3EDB9AEC1FD5F3235C1FD2E687770>

<B3EDB9AEC1FD5F3235C1FD2E687770> 경상북도 자연태음악의 소박집합, 장단유형, 전단후장 경상북도 자연태음악의 소박집합, 장단유형, 전단후장 - 전통 동요 및 부녀요를 중심으로 - 이 보 형 1) * 한국의 자연태 음악 특성 가운데 보편적인 특성은 대충 밝혀졌지만 소박집합에 의한 장단주기 박자유형, 장단유형, 같은 층위 전후 구성성분의 시가( 時 價 )형태 등 은 밝혀지지 않았으므로

More information

PRO1_09E [읽기 전용]

PRO1_09E [읽기 전용] Siemens AG 1999 All rights reserved File: PRO1_09E1 Information and - ( ) 2 3 4 5 Monitor/Modify Variables" 6 7 8 9 10 11 CPU 12 Stop 13 (Forcing) 14 (1) 15 (2) 16 : 17 : Stop 18 : 19 : (Forcing) 20 :

More information

PowerPoint Template

PowerPoint Template 16-1. 보조자료템플릿 (Template) 함수템플릿 클래스템플릿 Jong Hyuk Park 함수템플릿 Jong Hyuk Park 함수템플릿소개 함수템플릿 한번의함수정의로서로다른자료형에대해적용하는함수 예 int abs(int n) return n < 0? -n : n; double abs(double n) 함수 return n < 0? -n : n; //

More information

- 목차 - - ios 개발환경및유의사항. - 플랫폼 ios Project. - Native Controller와플랫폼화면연동. - 플랫폼 Web(js)-Native 간데이터공유. - 플랫폼확장 WN Interface 함수개발. - Network Manager clas

- 목차 - - ios 개발환경및유의사항. - 플랫폼 ios Project. - Native Controller와플랫폼화면연동. - 플랫폼 Web(js)-Native 간데이터공유. - 플랫폼확장 WN Interface 함수개발. - Network Manager clas 플랫폼사용을위한 ios Native Guide - 목차 - - ios 개발환경및유의사항. - 플랫폼 ios Project. - Native Controller와플랫폼화면연동. - 플랫폼 Web(js)-Native 간데이터공유. - 플랫폼확장 WN Interface 함수개발. - Network Manager class 개발. - Native Controller에서

More information

1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml 파일을텍스트에디터를이용하여 Open 합니다. config.xml 파일에서, 아

1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml 파일을텍스트에디터를이용하여 Open 합니다. config.xml 파일에서, 아 LG U+ SMS/MMS 통합클라이언트 LG U+ SMS/MMS Client Simple Install Manual LG U+ SMS/MMS 통합클라이언트 - 1 - 간단설치매뉴얼 1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml

More information

160322_ADOP 상품 소개서_1.0

160322_ADOP 상품 소개서_1.0 상품 소개서 March, 2016 INTRODUCTION WHO WE ARE WHAT WE DO ADOP PRODUCTS : PLATON SEO SOULTION ( ) OUT-STREAM - FOR MOBILE ADOP MARKET ( ) 2. ADOP PRODUCTS WHO WE ARE ADOP,. 2. ADOP PRODUCTS WHAT WE DO ADOP,.

More information

로거 자료실

로거 자료실 redirection 매뉴얼 ( 개발자용 ) V1.5 Copyright 2002-2014 BizSpring Inc. All Rights Reserved. 본문서에대한저작권은 비즈스프링 에있습니다. - 1 - 목차 01 HTTP 표준 redirect 사용... 3 1.1 HTTP 표준 redirect 예시... 3 1.2 redirect 현상이여러번일어날경우예시...

More information