Found 20 repositories(showing 20)
carltheperson
Getting better at Linux with 10 mini-projects.
Gamingwithlogout
Its a automatic PAYLOAD injector tools for kali linux powered by LogOut AKA Ethical Hacker. ##First os all make install of all the files required during this process . you can directly do it by installation script i.e. install.sh on the main folder. Run ./install.sh OR install the following packages 1. metasploit-framework 2. Android Debug Bridge(ADB) 3. Fastboot 4. colorama for python 5. Python3 Be sure to setup or place the HacksByLogout folder on root directory of system and not to touch or edit any files or it may cause you to stop working. Steps You need to follow!!!! (1) Just enter your IP of device. Note: you can check your ip using ifconfig command in terminal. (2) Enter the port : Note: I usually recommend using 8080, 4444, 5555 or any 4 digit number as a port since it is very necessary, you need to use the port . (3) turn on usb debugging on your device and plug it for 10 seconds. Time depend upon your internet connection and system power. (4) After the injection , it will automatic open msf console so that it will be easy for you. (5) type the commands given to you on opened terminal. After exploit just tap or launch the installed PAYLOAD for single time and you will be connected. MAKING PAYLOAD SECURE!!! after connection just type the following command and hit enter. hide_app_icon this let you to hide your PAYLOAD and make it undetectable by user. use help command to list the things you can do. Copyright@HacksByLogOut
Buildsoftwaresphere
window.hjSiteSettings = {"forms":[],"record":true,"polls":[],"r":1.0,"record_targeting_rules":[],"deferred_page_contents":[{"targeting":[{"pattern":"http:\/\/www.ibm.com\/cloud-computing\/solutions\/cloud-analytics\/roles\/guided-tour\/marketing+leader\/marketing+leader?role=\/ibm+blue+content\/solutions\/cloud-analytics\/roles\/","match_operation":"simple","component":"url"},{"pattern":"desktop","match_operation":"exact","component":"device"}],"id":429895},{"targeting":[{"pattern":"http:\/\/www.ibm.com\/cloud-computing\/solutions\/cloud-analytics\/roles\/guided-tour\/marketing+leader\/marketing+leader?role=\/ibm+blue+content\/solutions\/cloud-analytics\/roles\/","match_operation":"simple","component":"url"},{"pattern":"tablet","match_operation":"exact","component":"device"}],"id":429894},{"targeting":[{"pattern":"http:\/\/www.ibm.com\/cloud-computing\/solutions\/cloud-analytics\/roles\/guided-tour\/marketing+leader\/marketing+leader?role=\/ibm+blue+content\/solutions\/cloud-analytics\/roles\/","match_operation":"simple","component":"url"},{"pattern":"phone","match_operation":"exact","component":"device"}],"id":429893},{"targeting":[{"pattern":"https:\/\/www.ibm.com\/marketplace\/cloud\/mobile-push-notifications\/us\/en-us","match_operation":"simple","component":"url"},{"pattern":"phone","match_operation":"exact","component":"device"}],"id":401005},{"targeting":[{"pattern":"https:\/\/www.ibm.com\/marketplace\/cloud\/mobile-push-notifications\/us\/en-us","match_operation":"simple","component":"url"},{"pattern":"tablet","match_operation":"exact","component":"device"}],"id":264416},{"targeting":[{"pattern":"https:\/\/www.ibm.com\/marketplace\/cloud\/XConfigureProductView?catalogId=12301&langId=-1&partNumber=DK-D1BCWLL&storeId=18251&ddkey=https%3AXConfigureProduct","match_operation":"exact","component":"url"},{"pattern":"phone","match_operation":"exact","component":"device"}],"id":405647},{"targeting":[{"pattern":"https:\/\/www.ibm.com\/marketplace\/cloud\/XConfigureProductView?catalogId=12301&langId=-1&partNumber=DK-D1BCWLL&storeId=18251&ddkey=https%3AXConfigureProduct","match_operation":"exact","component":"url"},{"pattern":"tablet","match_operation":"exact","component":"device"}],"id":269058},{"targeting":[{"pattern":"https:\/\/www.ibm.com\/marketplace\/cloud\/XConfigureProductView?catalogId=12301&langId=-1&partNumber=DK-D1BCWLL&storeId=18251&ddkey=https%3AXConfigureProduct","match_operation":"exact","component":"url"},{"pattern":"desktop","match_operation":"exact","component":"device"}],"id":139636},{"targeting":[{"pattern":"http:\/\/ibm.com\/it-infrastructure\/us-en\/","match_operation":"simple","component":"url"},{"pattern":"phone","match_operation":"exact","component":"device"}],"id":365464},{"targeting":[{"pattern":"http:\/\/ibm.com\/it-infrastructure\/us-en\/","match_operation":"simple","component":"url"},{"pattern":"tablet","match_operation":"exact","component":"device"}],"id":228875},{"targeting":[{"pattern":"http:\/\/ibm.com\/it-infrastructure\/us-en\/","match_operation":"simple","component":"url"},{"pattern":"desktop","match_operation":"exact","component":"device"}],"id":76098},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/us\/en\/partner-landing","match_operation":"simple","component":"url"},{"pattern":"phone","match_operation":"exact","component":"device"}],"id":311181},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/us\/en\/partner-landing","match_operation":"simple","component":"url"},{"pattern":"tablet","match_operation":"exact","component":"device"}],"id":174589},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/us\/en\/partner-landing","match_operation":"simple","component":"url"},{"pattern":"desktop","match_operation":"exact","component":"device"}],"id":81585},{"targeting":[{"pattern":"http:\/\/ibm.com\/software\/analytics\/spss\/","match_operation":"simple","component":"url"},{"pattern":"phone","match_operation":"exact","component":"device"}],"id":401721},{"targeting":[{"pattern":"http:\/\/ibm.com\/software\/analytics\/spss\/","match_operation":"simple","component":"url"},{"pattern":"tablet","match_operation":"exact","component":"device"}],"id":265132},{"targeting":[{"pattern":"http:\/\/ibm.com\/software\/analytics\/spss\/","match_operation":"simple","component":"url"},{"pattern":"desktop","match_operation":"exact","component":"device"}],"id":120082},{"targeting":[{"pattern":"http:\/\/ibm.com\/software\/info\/trials\/#all","match_operation":"exact","component":"url"},{"pattern":"phone","match_operation":"exact","component":"device"}],"id":286940},{"targeting":[{"pattern":"http:\/\/ibm.com\/software\/info\/trials\/#all","match_operation":"exact","component":"url"},{"pattern":"tablet","match_operation":"exact","component":"device"}],"id":150348},{"targeting":[{"pattern":"http:\/\/ibm.com\/software\/info\/trials\/#all","match_operation":"exact","component":"url"},{"pattern":"desktop","match_operation":"exact","component":"device"}],"id":114245},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/bluemix\/solutions\/mobilefirst\/","match_operation":"simple","component":"url"},{"pattern":"phone","match_operation":"exact","component":"device"}],"id":297414},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/bluemix\/solutions\/mobilefirst\/","match_operation":"simple","component":"url"},{"pattern":"tablet","match_operation":"exact","component":"device"}],"id":160822},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/bluemix\/solutions\/mobilefirst\/","match_operation":"simple","component":"url"},{"pattern":"desktop","match_operation":"exact","component":"device"}],"id":67088},{"targeting":[{"pattern":"http:\/\/ibm.com\/uk-en\/","match_operation":"simple","component":"url"},{"pattern":"phone","match_operation":"exact","component":"device"}],"id":401863},{"targeting":[{"pattern":"http:\/\/ibm.com\/uk-en\/","match_operation":"simple","component":"url"},{"pattern":"tablet","match_operation":"exact","component":"device"}],"id":265274},{"targeting":[{"pattern":"http:\/\/ibm.com\/uk-en\/","match_operation":"simple","component":"url"},{"pattern":"desktop","match_operation":"exact","component":"device"}],"id":118040},{"targeting":[{"pattern":"http:\/\/ibm.com\/analytics\/watson-analytics\/","match_operation":"simple","component":"url"},{"pattern":"phone","match_operation":"exact","component":"device"}],"id":278677},{"targeting":[{"pattern":"http:\/\/ibm.com\/analytics\/watson-analytics\/","match_operation":"simple","component":"url"},{"pattern":"tablet","match_operation":"exact","component":"device"}],"id":142085},{"targeting":[{"pattern":"http:\/\/ibm.com\/analytics\/watson-analytics\/","match_operation":"simple","component":"url"},{"pattern":"desktop","match_operation":"exact","component":"device"}],"id":84922},{"targeting":[{"pattern":"http:\/\/ibm.com\/ibmid\/basic_register\/register.html","match_operation":"simple","component":"url"},{"pattern":"phone","match_operation":"exact","component":"device"}],"id":369128},{"targeting":[{"pattern":"http:\/\/ibm.com\/ibmid\/basic_register\/register.html","match_operation":"simple","component":"url"},{"pattern":"tablet","match_operation":"exact","component":"device"}],"id":232539},{"targeting":[{"pattern":"http:\/\/ibm.com\/ibmid\/basic_register\/register.html","match_operation":"simple","component":"url"},{"pattern":"desktop","match_operation":"exact","component":"device"}],"id":84925},{"targeting":[{"pattern":"http:\/\/ibm.com\/ibm\/puresystems\/us\/en\/hybrid-cloud\/","match_operation":"starts_with","component":"url"},{"pattern":"phone","match_operation":"exact","component":"device"}],"id":364929},{"targeting":[{"pattern":"http:\/\/ibm.com\/ibm\/puresystems\/us\/en\/hybrid-cloud\/","match_operation":"starts_with","component":"url"},{"pattern":"tablet","match_operation":"exact","component":"device"}],"id":228340},{"targeting":[{"pattern":"http:\/\/ibm.com\/ibm\/puresystems\/us\/en\/hybrid-cloud\/","match_operation":"starts_with","component":"url"},{"pattern":"desktop","match_operation":"exact","component":"device"}],"id":104371},{"targeting":[{"pattern":"http:\/\/ibm.com\/developerworks\/downloads\/","match_operation":"simple","component":"url"},{"pattern":"phone","match_operation":"exact","component":"device"}],"id":308793},{"targeting":[{"pattern":"http:\/\/ibm.com\/developerworks\/downloads\/","match_operation":"simple","component":"url"},{"pattern":"tablet","match_operation":"exact","component":"device"}],"id":172201},{"targeting":[{"pattern":"http:\/\/ibm.com\/developerworks\/downloads\/","match_operation":"simple","component":"url"},{"pattern":"desktop","match_operation":"exact","component":"device"}],"id":108585},{"targeting":[{"pattern":"http:\/\/ibm.com\/developerworks\/","match_operation":"simple","component":"url"},{"pattern":"phone","match_operation":"exact","component":"device"}],"id":378334},{"targeting":[{"pattern":"http:\/\/ibm.com\/developerworks\/","match_operation":"simple","component":"url"},{"pattern":"tablet","match_operation":"exact","component":"device"}],"id":241745},{"targeting":[{"pattern":"http:\/\/ibm.com\/developerworks\/","match_operation":"simple","component":"url"},{"pattern":"desktop","match_operation":"exact","component":"device"}],"id":94165},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/XConfigureProductView?trialId=&cm_sp=&catalogId=12301&langId=-1&storeId=18251&partNumber=DK-devWorks-USD&ddkey=http%3AXConfigureProduct#xaddtocart","match_operation":"exact","component":"url"},{"pattern":"phone","match_operation":"exact","component":"device"}],"id":362728},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/XConfigureProductView?trialId=&cm_sp=&catalogId=12301&langId=-1&storeId=18251&partNumber=DK-devWorks-USD&ddkey=http%3AXConfigureProduct#xaddtocart","match_operation":"exact","component":"url"},{"pattern":"tablet","match_operation":"exact","component":"device"}],"id":226139},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/XConfigureProductView?trialId=&cm_sp=&catalogId=12301&langId=-1&storeId=18251&partNumber=DK-devWorks-USD&ddkey=http%3AXConfigureProduct#xaddtocart","match_operation":"exact","component":"url"},{"pattern":"desktop","match_operation":"exact","component":"device"}],"id":74479},{"targeting":[{"pattern":"http:\/\/ibm.com\/ibm\/puresystems\/us\/en\/hybrid-cloud\/?S_PKG=-&S_TACT=C432013W&campaign=PureApplication%20Tutorial_BR&group=PureApp_BR&mkwid=1af491ed-84fa-9ee8-2a5e-00002588308a&ct=C432013W&iio=PSYS&cmp=C4320&ck=%2Bibm%20pureapplication%20service&cs=b&ccy=US&cr=google&cm=k&cn=PureApp_BR","match_operation":"exact","component":"url"},{"pattern":"phone","match_operation":"exact","component":"device"}],"id":318675},{"targeting":[{"pattern":"http:\/\/ibm.com\/ibm\/puresystems\/us\/en\/hybrid-cloud\/?S_PKG=-&S_TACT=C432013W&campaign=PureApplication%20Tutorial_BR&group=PureApp_BR&mkwid=1af491ed-84fa-9ee8-2a5e-00002588308a&ct=C432013W&iio=PSYS&cmp=C4320&ck=%2Bibm%20pureapplication%20service&cs=b&ccy=US&cr=google&cm=k&cn=PureApp_BR","match_operation":"exact","component":"url"},{"pattern":"tablet","match_operation":"exact","component":"device"}],"id":182083},{"targeting":[{"pattern":"http:\/\/ibm.com\/ibm\/puresystems\/us\/en\/hybrid-cloud\/?S_PKG=-&S_TACT=C432013W&campaign=PureApplication%20Tutorial_BR&group=PureApp_BR&mkwid=1af491ed-84fa-9ee8-2a5e-00002588308a&ct=C432013W&iio=PSYS&cmp=C4320&ck=%2Bibm%20pureapplication%20service&cs=b&ccy=US&cr=google&cm=k&cn=PureApp_BR","match_operation":"exact","component":"url"},{"pattern":"desktop","match_operation":"exact","component":"device"}],"id":98162},{"targeting":[{"pattern":"http:\/\/ibm.com\/middleware\/en-us\/index.html","match_operation":"simple","component":"url"},{"pattern":"phone","match_operation":"exact","component":"device"}],"id":342862},{"targeting":[{"pattern":"http:\/\/ibm.com\/middleware\/en-us\/index.html","match_operation":"simple","component":"url"},{"pattern":"tablet","match_operation":"exact","component":"device"}],"id":206270},{"targeting":[{"pattern":"http:\/\/ibm.com\/middleware\/en-us\/index.html","match_operation":"simple","component":"url"},{"pattern":"desktop","match_operation":"exact","component":"device"}],"id":64026}],"recording_capture_keystrokes":false,"heatmaps":[{"targeting":[{"pattern":"http:\/\/ibm.com\/us-en\/","match_operation":"simple","component":"url"}],"created_epoch_time":1449854856,"id":280987},{"targeting":[{"pattern":"http:\/\/www.ibm.com\/cloud-computing\/solutions\/cloud-analytics\/roles\/guided-tour\/marketing+leader\/marketing+leader?role=\/ibm+blue+content\/solutions\/cloud-analytics\/roles\/","match_operation":"simple","component":"url"}],"created_epoch_time":1449851023,"id":280857},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/us\/en-us","match_operation":"simple","component":"url"}],"created_epoch_time":1449732051,"id":277453},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-analytics","match_operation":"simple","component":"url"}],"created_epoch_time":1445024270,"id":205800},{"targeting":[{"pattern":"http:\/\/ibm.com\/smarterplanet\/us\/en\/ibmwatson\/clinical-trial-matching.html","match_operation":"simple","component":"url"}],"created_epoch_time":1444498440,"id":198257},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/searchterm\/marketplace\/us\/en-us","match_operation":"simple","component":"url"}],"created_epoch_time":1445963756,"id":217969},{"targeting":[{"pattern":"http:\/\/ibm.com\/industries\/en-us\/","match_operation":"simple","component":"url"}],"created_epoch_time":1442609143,"id":175931},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-security","match_operation":"simple","component":"url"}],"created_epoch_time":1445624017,"id":214289},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-marketing\/web-customer-management","match_operation":"simple","component":"url"}],"created_epoch_time":1445623797,"id":214280},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/platform","match_operation":"simple","component":"url"}],"created_epoch_time":1444836363,"id":202425},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/enterprise-application-integration\/us\/en-us","match_operation":"simple","component":"url"}],"created_epoch_time":1445978090,"id":218378},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/mobile-cloud-computing\/","match_operation":"simple","component":"url"}],"created_epoch_time":1445966539,"id":218056},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/mobile-device-management\/us\/en-us","match_operation":"simple","component":"url"}],"created_epoch_time":1445977976,"id":218374},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-marketing\/digital-experience","match_operation":"simple","component":"url"}],"created_epoch_time":1445623964,"id":214287},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-marketing\/brand-co-creation","match_operation":"simple","component":"url"}],"created_epoch_time":1445623897,"id":214284},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/email-and-social-collaboration\/IBM-verse","match_operation":"simple","component":"url"}],"created_epoch_time":1445966396,"id":218048},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-devops\/hybrid","match_operation":"simple","component":"url"}],"created_epoch_time":1445031997,"id":205969},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-devops\/devops-for-monitoring","match_operation":"simple","component":"url"}],"created_epoch_time":1445031866,"id":205965},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-devops\/docker-cloud","match_operation":"simple","component":"url"}],"created_epoch_time":1445032065,"id":205971},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/community","match_operation":"simple","component":"url"}],"created_epoch_time":1444836530,"id":202437},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/email-and-social-collaboration\/social-business-platform","match_operation":"simple","component":"url"}],"created_epoch_time":1445966451,"id":218051},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-business-solutions","match_operation":"simple","component":"url"}],"created_epoch_time":1445980208,"id":218477},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-devops\/devops-for-fast-apps","match_operation":"simple","component":"url"}],"created_epoch_time":1445031799,"id":205963},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-enterprise-application-infrastructure\/cloud-web-application","match_operation":"simple","component":"url"}],"created_epoch_time":1445451654,"id":211239},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-enterprise-application-infrastructure\/scalable-web-applications","match_operation":"simple","component":"url"}],"created_epoch_time":1445451812,"id":211244},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-enterprise-application-infrastructure\/secure-runtime-environment","match_operation":"simple","component":"url"}],"created_epoch_time":1445451574,"id":211238},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-analytics\/roles","match_operation":"simple","component":"url"}],"created_epoch_time":1448387532,"id":255901},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-analytics\/financial-analytics","match_operation":"simple","component":"url"}],"created_epoch_time":1445030719,"id":205945},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-enterprise-application-infrastructure\/cloud-database-for-web-applications","match_operation":"simple","component":"url"}],"created_epoch_time":1445451861,"id":211246},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-analytics\/marketing-analytics","match_operation":"simple","component":"url"}],"created_epoch_time":1445030131,"id":205934},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-enterprise-application-infrastructure\/wordpress-on-cloud","match_operation":"simple","component":"url"}],"created_epoch_time":1445451735,"id":211241},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-analytics\/risk-analytics","match_operation":"simple","component":"url"}],"created_epoch_time":1445030277,"id":205935},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/email-and-social-collaboration\/business-email","match_operation":"simple","component":"url"}],"created_epoch_time":1445966338,"id":218046},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-enterprise-application-infrastructure\/roles","match_operation":"simple","component":"url"}],"created_epoch_time":1445451934,"id":211249},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-marketing","match_operation":"simple","component":"url"}],"created_epoch_time":1445623744,"id":214276},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/database-management\/us\/en-us","match_operation":"simple","component":"url"}],"created_epoch_time":1445978041,"id":218375},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/process-management-software-in-the-cloud\/us\/en-us","match_operation":"simple","component":"url"}],"created_epoch_time":1445978500,"id":218389},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/services","match_operation":"simple","component":"url"}],"created_epoch_time":1444836458,"id":202429},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/icons","match_operation":"simple","component":"url"}],"created_epoch_time":1448864780,"id":261717},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/hr-cloud","match_operation":"simple","component":"url"}],"created_epoch_time":1445451980,"id":211251},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/it-service-management","match_operation":"simple","component":"url"}],"created_epoch_time":1445453070,"id":211278},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/next\/84","match_operation":"simple","component":"url"}],"created_epoch_time":1445979321,"id":218442},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/built-on-cloud\/saas-security","match_operation":"simple","component":"url"}],"created_epoch_time":1445980311,"id":218480},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/guidance","match_operation":"simple","component":"url"}],"created_epoch_time":1448370513,"id":255152},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/tools","match_operation":"simple","component":"url"}],"created_epoch_time":1448370482,"id":255151},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/industry-federal","match_operation":"simple","component":"url"}],"created_epoch_time":1445980168,"id":218475},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/private-cloud","match_operation":"simple","component":"url"}],"created_epoch_time":1445980054,"id":218470},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-devops","match_operation":"simple","component":"url"}],"created_epoch_time":1445031697,"id":205958},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/statistical-analysis-and-reporting\/us\/en-us","match_operation":"simple","component":"url"}],"created_epoch_time":1448384669,"id":255784},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-deployment","match_operation":"simple","component":"url"}],"created_epoch_time":1445032408,"id":205976},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/mobile-cloud-computing","match_operation":"simple","component":"url"}],"created_epoch_time":1444925701,"id":204224},{"targeting":[{"pattern":"http:\/\/ibm.com\/products\/en-us\/","match_operation":"simple","component":"url"}],"created_epoch_time":1447897879,"id":248721},{"targeting":[{"pattern":"marketplace\/cloud\/developer","match_operation":"contains","component":"url"}],"created_epoch_time":1448030843,"id":251257},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/what-is-cloud-computing.html","match_operation":"simple","component":"url"}],"created_epoch_time":1445966596,"id":218060},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-marketing\/scale-rewarding-experiences","match_operation":"simple","component":"url"}],"created_epoch_time":1445623835,"id":214282},{"targeting":[{"pattern":"http:\/\/ibm.com\/services\/en-us\/","match_operation":"simple","component":"url"}],"created_epoch_time":1442609125,"id":175930},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-security\/security-for-application-development","match_operation":"simple","component":"url"}],"created_epoch_time":1445624103,"id":214290},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/site","match_operation":"simple","component":"url"}],"created_epoch_time":1448370405,"id":255147},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/consulting","match_operation":"simple","component":"url"}],"created_epoch_time":1445979880,"id":218467},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/email-and-social-collaboration","match_operation":"simple","component":"url"}],"created_epoch_time":1445625687,"id":214315},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/partner-landing","match_operation":"simple","component":"url"}],"created_epoch_time":1445980347,"id":218481},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/big-data-cloud\/daas-database-as-a-service","match_operation":"simple","component":"url"}],"created_epoch_time":1445031541,"id":205956},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/watson-analytics\/us\/en-us","match_operation":"simple","component":"url"}],"created_epoch_time":1447176184,"id":236325},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/business-email-platform\/us\/en-us","match_operation":"simple","component":"url"}],"created_epoch_time":1445977806,"id":218366},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/big-data-cloud","match_operation":"simple","component":"url"}],"created_epoch_time":1445030966,"id":205949},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/infrastructure","match_operation":"simple","component":"url"}],"created_epoch_time":1444836224,"id":202421},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/cloud-platform\/us\/en-us","match_operation":"simple","component":"url"}],"created_epoch_time":1445011564,"id":205613},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/built-on-cloud","match_operation":"simple","component":"url"}],"created_epoch_time":1444836495,"id":202432},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-enterprise-application-infrastructure","match_operation":"simple","component":"url"}],"created_epoch_time":1445032990,"id":205986},{"targeting":[{"pattern":"http:\/\/ibm.com\/smarterplanet\/us\/en\/ibmwatson\/discovery-advisor.html","match_operation":"simple","component":"url"}],"created_epoch_time":1444498155,"id":198254},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-security\/managed-hosted-security-services","match_operation":"simple","component":"url"}],"created_epoch_time":1445979811,"id":218463},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-security\/mobile-and-endpoint-security","match_operation":"simple","component":"url"}],"created_epoch_time":1445624163,"id":214291},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/external-links","match_operation":"simple","component":"url"}],"created_epoch_time":1448864680,"id":261712},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/menu-navigation","match_operation":"simple","component":"url"}],"created_epoch_time":1448864912,"id":261723},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/tabs-navigation","match_operation":"simple","component":"url"}],"created_epoch_time":1448865131,"id":261731},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/full-width-sections","match_operation":"simple","component":"url"}],"created_epoch_time":1448864735,"id":261715},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/hybrid-integration","match_operation":"simple","component":"url"}],"created_epoch_time":1445452746,"id":211267},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-deployment\/managed-sap","match_operation":"simple","component":"url"}],"created_epoch_time":1445032474,"id":205978},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/hybrid-integration\/api-management-on-cloud","match_operation":"simple","component":"url"}],"created_epoch_time":1445452802,"id":211269},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/guidance\/third-party","match_operation":"simple","component":"url"}],"created_epoch_time":1448866307,"id":261754},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/it-service-management\/it-help-desk-software","match_operation":"simple","component":"url"}],"created_epoch_time":1445623652,"id":214273},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/application-performance-management\/us\/en-us","match_operation":"simple","component":"url"}],"created_epoch_time":1445978245,"id":218382},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/guidance\/newsletters\/issue-2015-11","match_operation":"simple","component":"url"}],"created_epoch_time":1448866036,"id":261743},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/guidance\/color-palette","match_operation":"simple","component":"url"}],"created_epoch_time":1448866223,"id":261750},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/guidance\/design-checklist","match_operation":"simple","component":"url"}],"created_epoch_time":1448866063,"id":261744},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/built-on-cloud\/saas-migration","match_operation":"simple","component":"url"}],"created_epoch_time":1445980249,"id":218478},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/video","match_operation":"simple","component":"url"}],"created_epoch_time":1448865176,"id":261733},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/bare-metal-server\/us\/en-us","match_operation":"simple","component":"url"}],"created_epoch_time":1444925068,"id":204211},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/overlays","match_operation":"simple","component":"url"}],"created_epoch_time":1448864936,"id":261724},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/parallax","match_operation":"simple","component":"url"}],"created_epoch_time":1448864989,"id":261726},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns","match_operation":"simple","component":"url"}],"created_epoch_time":1448370460,"id":255149},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/footers","match_operation":"simple","component":"url"}],"created_epoch_time":1448864706,"id":261714},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/mastheads","match_operation":"simple","component":"url"}],"created_epoch_time":1448864890,"id":261722},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/it-service-management\/hybrid-cloud-application-performance-management","match_operation":"simple","component":"url"}],"created_epoch_time":1445453176,"id":211280},{"targeting":[{"pattern":"http:\/\/ibm.com\/middleware\/integration\/us-en\/api-economy\/index.html","match_operation":"simple","component":"url"}],"created_epoch_time":1447778073,"id":246054},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/operational-decision-management\/us\/en-us","match_operation":"simple","component":"url"}],"created_epoch_time":1445977569,"id":218362},{"targeting":[{"pattern":"https:\/\/www.ibm.com\/marketplace\/cloud\/mobile-push-notifications\/us\/en-us","match_operation":"simple","component":"url"}],"created_epoch_time":1449597139,"id":274786},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/workload-automation\/us\/en-us","match_operation":"simple","component":"url"}],"created_epoch_time":1445978443,"id":218385},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/open-cloud","match_operation":"simple","component":"url"}],"created_epoch_time":1445980099,"id":218472},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/show-hide","match_operation":"simple","component":"url"}],"created_epoch_time":1448865108,"id":261730},{"targeting":[{"pattern":"https:\/\/www.ibm.com\/marketplace\/cloud\/XConfigureProductView?catalogId=12301&langId=-1&partNumber=DK-D1BCWLL&storeId=18251&ddkey=https%3AXConfigureProduct","match_operation":"exact","component":"url"}],"created_epoch_time":1449605878,"id":274965},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/buttons","match_operation":"simple","component":"url"}],"created_epoch_time":1448864554,"id":261707},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/select-list-navigation","match_operation":"simple","component":"url"}],"created_epoch_time":1448865067,"id":261729},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/pagination-controls","match_operation":"simple","component":"url"}],"created_epoch_time":1448864962,"id":261725},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/next\/2860","match_operation":"simple","component":"url"}],"created_epoch_time":1445979070,"id":218425},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/guidance\/css3","match_operation":"simple","component":"url"}],"created_epoch_time":1448866197,"id":261749},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/hr-cloud\/talent-acquisition","match_operation":"starts_with","component":"url"}],"created_epoch_time":1445452558,"id":211261},{"targeting":[{"pattern":"http:\/\/ibm.com\/","match_operation":"simple","component":"url"}],"created_epoch_time":1447427937,"id":241687},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/hybrid-cloud","match_operation":"simple","component":"url"}],"created_epoch_time":1445979738,"id":218461},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/mobile-cloud-computing","match_operation":"starts_with","component":"url"}],"created_epoch_time":1445358297,"id":209427},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/breadcrumbs","match_operation":"simple","component":"url"}],"created_epoch_time":1448864524,"id":261706},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/live-chat","match_operation":"simple","component":"url"}],"created_epoch_time":1448864837,"id":261720},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-analytics\/roles\/guided-tour\/marketing+leader\/marketing+leader?role=\/ibm+blue+content\/solutions\/cloud-analytics\/roles\/","match_operation":"exact","component":"url"}],"created_epoch_time":1448387943,"id":255907},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/guidance\/seo","match_operation":"simple","component":"url"}],"created_epoch_time":1448866099,"id":261746},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-deployment\/enterprise-apps","match_operation":"simple","component":"url"}],"created_epoch_time":1445032862,"id":205985},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/scrollbar-widget","match_operation":"simple","component":"url"}],"created_epoch_time":1448865036,"id":261728},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/it-service-management\/automated-it-management","match_operation":"simple","component":"url"}],"created_epoch_time":1445623699,"id":214275},{"targeting":[{"pattern":"http:\/\/ibm.com\/it-infrastructure\/us-en\/","match_operation":"simple","component":"url"}],"created_epoch_time":1445548313,"id":213034},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/big-data-cloud\/data-management","match_operation":"starts_with","component":"url"}],"created_epoch_time":1445376304,"id":209893},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/api-management-on-cloud\/us\/en-us","match_operation":"simple","component":"url"}],"created_epoch_time":1444926232,"id":204232},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/guidance\/html5","match_operation":"simple","component":"url"}],"created_epoch_time":1448866141,"id":261747},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/internet-of-things\/us\/en-us","match_operation":"simple","component":"url"}],"created_epoch_time":1445978182,"id":218381},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/us\/en\/partner-landing","match_operation":"simple","component":"url"}],"created_epoch_time":1445978694,"id":218402},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/pull-quotes","match_operation":"simple","component":"url"}],"created_epoch_time":1448865012,"id":261727},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/online-meetings\/us\/en-us","match_operation":"simple","component":"url"}],"created_epoch_time":1445978616,"id":218397},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/itsm\/us\/en-us","match_operation":"simple","component":"url"}],"created_epoch_time":1445978565,"id":218394},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/bluemix\/case-study\/","match_operation":"starts_with","component":"url"}],"created_epoch_time":1443130751,"id":182007},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/next\/2014","match_operation":"simple","component":"url"}],"created_epoch_time":1445979366,"id":218443},{"targeting":[{"pattern":"http:\/\/ibm.com\/software\/analytics\/spss\/","match_operation":"simple","component":"url"}],"created_epoch_time":1448387195,"id":255898},{"targeting":[{"pattern":"http:\/\/ibm.com\/software\/info\/trials\/#all","match_operation":"exact","component":"url"}],"created_epoch_time":1447965036,"id":250198},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/hr-cloud\/hr-employee-engagement","match_operation":"simple","component":"url"}],"created_epoch_time":1445452671,"id":211266},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/bluemix\/garage\/","match_operation":"starts_with","component":"url"}],"created_epoch_time":1443130802,"id":182008},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/spss-statistics\/us\/en-us","match_operation":"simple","component":"url"}],"created_epoch_time":1445977739,"id":218364},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/bluemix\/solutions\/mobilefirst\/","match_operation":"simple","component":"url"}],"created_epoch_time":1444926095,"id":204230},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/next\/3450","match_operation":"simple","component":"url"}],"created_epoch_time":1445978858,"id":218416},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/next\/4327","match_operation":"simple","component":"url"}],"created_epoch_time":1445979566,"id":218451},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/next\/247","match_operation":"simple","component":"url"}],"created_epoch_time":1445979469,"id":218447},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/locale-selector","match_operation":"simple","component":"url"}],"created_epoch_time":1448864861,"id":261721},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/next\/2959","match_operation":"simple","component":"url"}],"created_epoch_time":1445979115,"id":218428},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/big-data-cloud\/big-data-cloud-analytics","match_operation":"simple","component":"url"}],"created_epoch_time":1445031103,"id":205951},{"targeting":[{"pattern":"http:\/\/ibm.com\/uk-en\/","match_operation":"simple","component":"url"}],"created_epoch_time":1448293878,"id":253908},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/next\/3792","match_operation":"simple","component":"url"}],"created_epoch_time":1445979611,"id":218453},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/bare-metal-server\/us\/en-us#pdpPurchasing","match_operation":"exact","component":"url"}],"created_epoch_time":1444925188,"id":204215},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/bluemix\/index.html","match_operation":"simple","component":"url"}],"created_epoch_time":1443711432,"id":188589},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/next\/3526","match_operation":"simple","component":"url"}],"created_epoch_time":1445978808,"id":218412},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/Enterprise-Instant-Messaging\/us\/en-us","match_operation":"simple","component":"url"}],"created_epoch_time":1445977357,"id":218357},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/next\/3400","match_operation":"simple","component":"url"}],"created_epoch_time":1445979278,"id":218439},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/guidance\/naming-policy","match_operation":"simple","component":"url"}],"created_epoch_time":1448866396,"id":261763},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/hybrid-integration\/microservices","match_operation":"simple","component":"url"}],"created_epoch_time":1445453008,"id":211277},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/date-time","match_operation":"simple","component":"url"}],"created_epoch_time":1448864654,"id":261710},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/carousels","match_operation":"simple","component":"url"}],"created_epoch_time":1448864596,"id":261708},{"targeting":[{"pattern":"http:\/\/ibm.com\/analytics\/watson-analytics\/","match_operation":"simple","component":"url"}],"created_epoch_time":1446149587,"id":221624},{"targeting":[{"pattern":"http:\/\/ibm.com\/ibmid\/basic_register\/register.html","match_operation":"simple","component":"url"}],"created_epoch_time":1446149675,"id":221627},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-analytics\/cloud-sales-performance-management","match_operation":"starts_with","component":"url"}],"created_epoch_time":1445030438,"id":205937},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/next\/3349","match_operation":"simple","component":"url"}],"created_epoch_time":1445978749,"id":218406},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/Process-modeling-in-the-cloud\/us\/en-us","match_operation":"simple","component":"url"}],"created_epoch_time":1445978380,"id":218383},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/guidance\/co-branding","match_operation":"simple","component":"url"}],"created_epoch_time":1448866273,"id":261752},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/next\/2235","match_operation":"simple","component":"url"}],"created_epoch_time":1445979423,"id":218445},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/guidance\/migration-of-acquisitions","match_operation":"simple","component":"url"}],"created_epoch_time":1448866338,"id":261758},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/anchor-links","match_operation":"simple","component":"url"}],"created_epoch_time":1448864497,"id":261705},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/next\/1351","match_operation":"simple","component":"url"}],"created_epoch_time":1445979510,"id":218449},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/next\/4414","match_operation":"simple","component":"url"}],"created_epoch_time":1445979216,"id":218436},{"targeting":[{"pattern":"http:\/\/ibm.com\/ibm\/puresystems\/us\/en\/hybrid-cloud\/","match_operation":"starts_with","component":"url"}],"created_epoch_time":1447366892,"id":240564},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-deployment\/sap-hana","match_operation":"simple","component":"url"}],"created_epoch_time":1445032765,"id":205983},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/hr-cloud\/learning-and-development","match_operation":"simple","component":"url"}],"created_epoch_time":1445452082,"id":211253},{"targeting":[{"pattern":"http:\/\/ibm.com\/developerworks\/","match_operation":"simple","component":"url"}],"created_epoch_time":1446753222,"id":230599},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/cloud-platform\/pr\/en-pr","match_operation":"simple","component":"url"}],"created_epoch_time":1445011666,"id":205615},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-deployment\/self-managed-sap","match_operation":"simple","component":"url"}],"created_epoch_time":1445032808,"id":205984},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/contact-module","match_operation":"simple","component":"url"}],"created_epoch_time":1448864624,"id":261709},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/next\/2154","match_operation":"simple","component":"url"}],"created_epoch_time":1445979174,"id":218433},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/guidance\/mobile-web","match_operation":"simple","component":"url"}],"created_epoch_time":1448866166,"id":261748},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/hybrid-integration\/secure-gateway","match_operation":"simple","component":"url"}],"created_epoch_time":1445452942,"id":211274},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/horizontal_rules","match_operation":"simple","component":"url"}],"created_epoch_time":1448864758,"id":261716},{"targeting":[{"pattern":"http:\/\/ibm.com\/ibm\/puresystems\/us\/en\/hybrid-cloud\/?S_PKG=-&S_TACT=C432013W&campaign=PureApplication%20Tutorial_BR&group=PureApp_BR&mkwid=1af491ed-84fa-9ee8-2a5e-00002588308a&ct=C432013W&iio=PSYS&cmp=C4320&ck=%2Bibm%20pureapplication%20service&cs=b&ccy=US&cr=google&cm=k&cn=PureApp_BR","match_operation":"exact","component":"url"}],"created_epoch_time":1447086616,"id":234505},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/tooltip","match_operation":"simple","component":"url"}],"created_epoch_time":1448865157,"id":261732},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/left-navigation","match_operation":"simple","component":"url"}],"created_epoch_time":1448864811,"id":261719},{"targeting":[{"pattern":"http:\/\/ibm.com\/middleware\/en-us\/index.html","match_operation":"simple","component":"url"}],"created_epoch_time":1444763322,"id":201250}],"surveys":[],"testers_widgets":[]}; (function(){window.hj=window.hj||function(){(window.hj.q=window.hj.q||[]).push(arguments)};hj.logException=function(t,a){var b="undefined"!==typeof hj.log?hj.log.debug:function(){},c,g;try{c={"http:":12080,"https:":12443}[location.protocol],g={message:t?t.toString():"<unknown>",url:location.href,data:"object"===typeof a?hj.json.stringify(a):a},b(g),hj.hq.ajax({url:"//graylog.hotjar.com:"+c+"/gelf",type:"POST",data:hj.json.stringify(g)})}catch(d){b("Failed to log exception: "+d)}};hj.testException= function(){try{"test".push([])}catch(t){hj.logException(t)}};hj.testExceptionWithData=function(){try{"test".push([])}catch(t){hj.logException(t,{foo:"bar"})}}})(); try{(function(t,a){var b;b=function(a){return new c(a)};b.isEmptyObject=function(a){return Object.keys(a).length?!1:!0};b.isFunction=function(a){return"function"===typeof a};b.isWindow=function(a){return a===window};b.isDocument=function(a){return a===window.document};b.noop=function(){};b.each=function(a,d){var b,c;if("object"===typeof a&&"[object Array]"!==Object.prototype.toString.call(a))if((c=a[Object.keys(a)[0]])&&void 0!==c.nodeName)for(b in a){if(a.hasOwnProperty(b)&&"length"!==b&&!1===d(b, a[b],a))break}else for(b in a){if(a.hasOwnProperty(b)&&!1===d(b,a[b],a))break}else for(b=0;b<a.length&&!1!==d(b,a[b],a);b+=1);};b.trim=function(a){return"string"===typeof a?a.replace(/^\s+|\s+$/gm,""):""};b.inArray=function(a,d){var b=d.indexOf(a);return"undefined"===typeof b||-1===b?!1:!0};b.indexOf=function(a,d){var b=d.indexOf(a);return"undefined"!==typeof b?b:-1};b.ajax=function(a){try{var d=new XMLHttpRequest;a.type=a.type||"GET";d.open(a.type,a.url,!0);"POST"===a.type&&d.setRequestHeader("Content-Type", (a.contentType?a.contentType:"application/x-www-form-urlencoded")+"; charset=UTF-8");d.onload=function(){200<=d.status&&400>d.status?b.isFunction(a.success)&&a.success(d.responseText&&hj.json.parse(d.responseText),d):b.isFunction(a.error)&&a.error(d)};d.onerror=function(){b.isFunction(a.error)&&a.error(d)};b.isFunction(a.requestAnnotator)&&a.requestAnnotator(d);"POST"===a.type&&a.data?d.send(a.data):d.send()}catch(c){hj.logException(c,{settings:a})}};b.get=function(a,d){var b=new XMLHttpRequest;b.open("GET", a,!0);b.onload=function(){200<=b.status&&400>b.status&&d&&d(b.responseText)};b.send()};b.eventHandlers={};b.selector="";var c=function(g){var d;b.selector=g;if(b.isWindow(g))this[0]=window,this.length=1;else if(b.isDocument(g))this[0]=a,this.length=1;else if("object"===typeof g)this[0]=g,this.length=1;else if("string"===typeof g&&"<"===g.charAt(0)&&">"===g.charAt(g.length-1)&&3<=g.length)d=a.createElement("div"),d.innerHTML=g,this[0]=d.childNodes[0],this.length=1;else if(g){if(!isNaN(g.charAt(1))&& ("."===g.charAt(0)||"#"===g.charAt(0)))g=g.charAt(0)+"\\3"+g.charAt(1)+" "+g.slice(2);try{a.querySelectorAll(g)}catch(c){return this.length=0,this}g=a.querySelectorAll(g);for(d=0;d<g.length;d+=1)this[d]=g[d];this.length=g.length}return this};c.prototype.val=function(a){"undefined"!==typeof a&&0<this.length&&(this[0].value=a);if(void 0!==this[0])return this[0]?this[0].value:""};c.prototype.text=function(a){return void 0===a?this[0].textContent:this[0].textContent=a};c.prototype.each=function(a,b){Array.prototype.forEach.call(this, function(a,g,n){b(g,a,n)})};c.prototype.append=function(g){var d;"object"===typeof g?"body"===b.selector?a.body.appendChild(g.get(0)):this[0].appendChild(g.get(0)):"body"===b.selector?(d=a.createElement("div"),d.innerHTML=g,a.body.appendChild(d)):(d=a.createElement("div"),d.innerHTML=g,this[0].appendChild(d))};c.prototype.hasClass=function(a){return this[0].classList?this[0].classList.contains(a):RegExp("(^| )"+a+"( |$)","gi").test(this[0].className)};c.prototype.addClass=function(a){var b;for(b= 0;b<this.length;b+=1)this[b].classList?this[b].classList.add(a):this[b].className+=" "+a;return this};c.prototype.removeClass=function(a){var b;for(b=0;b<this.length;b+=1)this[b].classList?this[b].classList.remove(a):this[b].className=this[b].className.replace(RegExp("(^|\\b)"+a.split(" ").join("|")+"(\\b|$)","gi")," ");return this};c.prototype.toggleClass=function(a){var b;for(b=0;b<this.length;b+=1)this[b].classList?this[b].classList.contains(a)?this[b].classList.remove(a):this[b].classList.add(a): RegExp("(^| )"+a+"( |$)","gi").test(this[0].className)?this[b].className=this[b].className.replace(RegExp("(^|\\b)"+a.split(" ").join("|")+"(\\b|$)","gi")," "):this[b].className+=" "+a;return this};c.prototype.is=function(a){var b;a:{b=this[0];var c=b.matchesSelector||b.msMatchesSelector||b.mozMatchesSelector||b.webkitMatchesSelector||b.oMatchesSelector;if(c)b=c.call(b,a);else{a=b.parentNode.querySelectorAll(a);for(c=a.length;c-=1;)if(a[c]===b){b=!0;break a}b=!1}}return b};c.prototype.remove=function(){var a; for(a=0;a<this.length;a+=1)this[a].parentNode.removeChild(this[a])};c.prototype.click=function(b){var d;for(d=0;d<this.length;d+=1)event=a.createEvent("HTMLEvents"),event.initEvent("click",!0,!1),this[d].dispatchEvent(event),b&&b()};c.prototype.trigger=function(b){var d,c=b.split(" "),k;for(b=0;b<this.length;b+=1)for(d=0;d<c.length;d+=1)k=a.createEvent("HTMLEvents"),k.initEvent(c[d],!0,!1),this[b].dispatchEvent(k)};c.prototype.on=function(g,d,c){var k,n=g.split(" "),q,l,f,p,h,F;if(b.isDocument(this[0])&& "string"===typeof d)for(g=0;g<n.length;g+=1)"string"===typeof d?("boolean"===typeof c&&!1===c&&(c=function(a){a.preventDefault();return!1}),q=d+"."+n[g],l=function(b){if(f=a.querySelectorAll(d)){p=b.target;for(h=-1;p&&-1===(h=Array.prototype.indexOf.call(f,p));)p=p.parentElement;-1<h&&c.call(p,b)}},"array"!==typeof b.eventHandlers[q]&&(b.eventHandlers[q]=[]),b.eventHandlers[q].push(l),a.addEventListener(n[g].split(".")[0],l,!0)):("boolean"===typeof d&&!1===d&&(d=function(a){a.preventDefault();return!1}), "array"!==typeof b.eventHandlers.document&&(b.eventHandlers.document=[]),b.eventHandlers.document.push(d),this[0].addEventListener(n[g].split(".")[0],d,!1));else if(b.isDocument(this[0]))for(g=0;g<n.length;g+=1)"boolean"===typeof d&&!1===d&&(d=function(a){a.preventDefault();return!1}),q="document."+n[g],"array"!==typeof b.eventHandlers[q]&&(b.eventHandlers[q]=[]),b.eventHandlers[q].push(d),a.addEventListener(n[g].split(".")[0],d,!1);else if(b.isWindow(this[0]))for(g=0;g<n.length;g+=1)"boolean"=== typeof d&&!1===d&&(d=function(a){a.preventDefault();return!1}),q="window."+n[g],"array"!==typeof b.eventHandlers[q]&&(b.eventHandlers[q]=[]),b.eventHandlers[q].push(d),window.addEventListener(n[g].split(".")[0],d,!1);else for(k=0;k<this.length;k+=1)for(g=0;g<n.length;g+=1)"object"===typeof d?(F=d,d=function(a){a.data=F;c.call(this[k],a)}):"boolean"===typeof d&&!1===d&&(d=function(a){a.preventDefault();return!1}),q=b.selector+"."+n[g],"array"!==typeof b.eventHandlers[q]&&(b.eventHandlers[q]=[]),b.eventHandlers[q].push(d), this[k].addEventListener(n[g].split(".")[0],d,!1);return this};c.prototype.off=function(g,c,m){var k,n,q=g.split(" ");for(g=0;g<this.length;g+=1)for(k=0;k<q.length;k+=1)if(b.isDocument(this[g])&&"string"===typeof c)if("undefined"===typeof m){if("object"===typeof b.eventHandlers[c+"."+q[k]])for(n=0;n<b.eventHandlers[c+"."+q[k]].length;n+=1)a.removeEventListener(q[k].split(".")[0],b.eventHandlers[c+"."+q[k]][n],!0)}else a.removeEventListener(q[k].split(".")[0],m,!1);else if(b.isDocument(this[g]))if("undefined"=== typeof c){if("object"===typeof b.eventHandlers["document."+q[k]])for(n=0;n<b.eventHandlers["document."+q[k]].length;n+=1)a.removeEventListener(q[k].split(".")[0],b.eventHandlers["document."+q[k]][n],!1)}else a.removeEventListener(q[k].split(".")[0],c,!1);else if(b.isWindow(this[g]))if("undefined"===typeof c){if("object"===typeof b.eventHandlers["window."+q[k]])for(n=0;n<b.eventHandlers["window."+q[k]].length;n+=1)window.removeEventListener(q[k].split(".")[0],b.eventHandlers["window."+q[k]][n],!1)}else window.removeEventListener(q[k].split(".")[0], c,!1);else if("undefined"===typeof c){if("object"===typeof b.eventHandlers[b.selector+"."+q[k]])for(n=0;n<b.eventHandlers[b.selector+"."+q[k]].length;n+=1)this[g].removeEventListener(q[k].split(".")[0],b.eventHandlers[b.selector+"."+q[k]][n],!1)}else this[g].removeEventListener(q[k].split(".")[0],c,!1);return this};c.prototype.scrollTop=function(){return window.document.body.scrollTop||window.document.documentElement.scrollTop};c.prototype.height=function(){var g;return b.isWindow(this[0])?a.documentElement.clientHeight: 9===this[0].nodeType?(g=this[0].documentElement,Math.max(this[0].body.scrollHeight,g.scrollHeight,this[0].body.offsetHeight,g.offsetHeight,g.clientHeight)):Math.max(this[0].scrollHeight,this[0].offsetHeight)};c.prototype.width=function(){var g;return b.isWindow(this[0])?a.documentElement.clientWidth:9===this[0].nodeType?(g=this[0].documentElement,Math.max(this[0].body.scrollWidth,g.scrollWidth,this[0].body.offsetWidth,g.offsetWidth,g.clientWidth)):Math.max(this[0].scrollWidth,this[0].offsetWidth)}; c.prototype.outerHeight=function(){return this[0].offsetHeight};c.prototype.offset=function(){var a=(this[0]&&this[0].ownerDocument).documentElement;return{top:this[0].getBoundingClientRect().top+window.pageYOffset-a.clientTop,left:this[0].getBoundingClientRect().left+window.pageXOffset-a.clientLeft}};c.prototype.attr=function(a,b){var c;if(b||""===b){for(c=0;c<this.length;c+=1)this[c].setAttribute(a,b);return this}if(null!==this[0].getAttribute(a))return this[0].getAttribute(a)};c.prototype.ready= function(c){b.isDocument(this[0])&&("interactive"===a.readyState||"complete"===a.readyState||"loaded"===a.readyState?c():a.addEventListener("DOMContentLoaded",c,!1))};c.prototype.parent=function(){return b(this[0].parentNode)};c.prototype.get=function(a){return this[a]};c.prototype.show=function(){var a;for(a=0;a<this.length;a+=1)this[a].style.display="";return this};c.prototype.hide=function(){var a;for(a=0;a<this.length;a+=1)this[a].style.display="none";return this};c.prototype.focus=function(){var a; for(a=0;a<this.length;a+=1)this[a].focus();return this};c.prototype.blur=function(){var a;for(a=0;a<this.length;a+=1)this[a].blur();return this};c.prototype.clone=function(){return this[0].cloneNode(!0)};c.prototype.removeAttr=function(a){var b;for(b=0;b<this.length;b+=1)this[b].removeAttribute(a);return this};c.prototype.find=function(a){var c=b(),m;try{m=this[0].querySelectorAll(a)}catch(k){return this.length=0,this}for(a=0;a<m.length;a+=1)c[a]=m[a];c.length=m.length;return c};c.prototype.is=function(a){var c, m=!1;if(!a)return!1;if("object"===typeof a)return b(this[0]).get(0)===a.get(0);if("string"===typeof a){if(":visible"===a)return!(0>=this[0].offsetWidth&&0>=this[0].offsetHeight);if(":hidden"===a)return 0>=this[0].offsetWidth&&0>=this[0].offsetHeight;if(":checked"===a)return this[0].checked;if(-1<a.indexOf("[")){if(c=/([A-Za-z]+)\[([A-Za-z-]+)\=([A-Za-z]+)\]/g.exec(a),c.length)return b.each(b(this[0]).get(0).attributes,function(a,b){b.name===c[2]&&b.value===c[3]&&(m=!0)}),b(this[0]).get(0).nodeName.toLowerCase()=== c[1]&&m}else return b(this[0]).get(0).nodeName.toLowerCase()===a}};c.prototype.css=function(a,b){var c,k;for(k=0;k<this.length;k+=1)if("object"===typeof a)for(c in a)this[k].style[c]=a[c];else if("number"===typeof b||"string"===typeof b)this[k].style[a]=b;else return getComputedStyle(this[k])[a];return this};c.prototype.animate=function(a,c){var m,k=this;"undefined"===typeof c&&(c=400);for(m=0;m<k.length;m+=1)b.each(a,function(a,b){function l(a,b){a.style[b[0].attribute]=b[0].value;b.shift();b.length? u=setTimeout(function(){l(a,b)},10):clearTimeout(u)}b=b.toString();var f=parseFloat(getComputedStyle(k[m])[a])||0,p=getComputedStyle(k[m])[a].replace(/[0-9.-]/g,""),h=parseFloat(b),g=b.replace(/[0-9.-]/g,""),p=p||g,y=h-f,g=parseFloat(c/10),y=y/g,v=[],x,u;for(x=0;x<g;x+=1)f+=y,v.push({attribute:a,value:p?parseInt(f)+p:parseFloat(f).toFixed(1)});v.pop();v.push({attribute:a,value:h+p});v.length&&l(k[m],v)});return this};c.prototype.filter=function(c){return Array.prototype.filter.call(a.querySelectorAll(b.selector), function(a,b){c(b,a)})};t.hj=t.hj||{};t.hj.hq=t.hj.hq||b})(this,document)}catch(exception$$4){hj.logException(exception$$4)} (function(){var t=null;hj.fingerprinter=function(a){this.options=this.extend(a,{sortPluginsFor:[/palemoon/i]});this.nativeForEach=Array.prototype.forEach;this.nativeMap=Array.prototype.map};hj.fingerprinter.prototype={extend:function(a,b){if(null==a)return b;for(var c in a)null!=a[c]&&b[c]!==a[c]&&(b[c]=a[c]);return b},log:function(a){window.console&&console.log(a)},get:function(){var a=[];null===t&&(a=this.userAgentKey(a),a=this.languageKey(a),a=this.colorDepthKey(a),a=this.screenResolutionKey(a), a=this.timezoneOffsetKey(a),a=this.sessionStorageKey(a),a=this.localStorageKey(a),a=this.indexedDbKey(a),a=this.addBehaviorKey(a),a=this.openDatabaseKey(a),a=this.cpuClassKey(a),a=this.platformKey(a),a=this.doNotTrackKey(a),a=this.pluginsKey(a),a=this.adBlockKey(a),a=this.hasLiedLanguagesKey(a),a=this.hasLiedResolutionKey(a),a=this.hasLiedOsKey(a),a=this.hasLiedBrowserKey(a),a=this.touchSupportKey(a),t=this.x64hash128(a.join("~~~"),31));return t},getAsNumber:function(){var a,b;a=parseInt(this.get().slice(-10), 16);b=Math.pow(2,40);return a/b},compareRatio:function(a,b){return this.getAsNumber()*(b?100:1)<=a},userAgentKey:function(a){a.push(navigator.userAgent);return a},languageKey:function(a){a.push(navigator.language);return a},colorDepthKey:function(a){a.push(screen.colorDepth);return a},screenResolutionKey:function(a){return this.getScreenResolution(a)},getScreenResolution:function(a){var b,c;b=this.options.detectScreenOrientation?screen.height>screen.width?[screen.height,screen.width]:[screen.width, screen.height]:[screen.height,screen.width];"undefined"!==typeof b&&a.push(b);screen.availWidth&&screen.availHeight&&(c=this.options.detectScreenOrientation?screen.availHeight>screen.availWidth?[screen.availHeight,screen.availWidth]:[screen.availWidth,screen.availHeight]:[screen.availHeight,screen.availWidth]);"undefined"!==typeof c&&a.push(c);return a},timezoneOffsetKey:function(a){a.push((new Date).getTimezoneOffset());return a},sessionStorageKey:function(a){this.hasSessionStorage()&&a.push("sessionStorageKey"); return a},localStorageKey:function(a){this.hasLocalStorage()&&a.push("localStorageKey");return a},indexedDbKey:function(a){this.hasIndexedDB()&&a.push("indexedDbKey");return a},addBehaviorKey:function(a){document.body&&document.body.addBehavior&&a.push("addBehaviorKey");return a},openDatabaseKey:function(a){window.openDatabase&&a.push("openDatabase");return a},cpuClassKey:function(a){a.push(this.getNavigatorCpuClass());return a},platformKey:function(a){a.push(this.getNavigatorPlatform());return a}, doNotTrackKey:function(a){a.push(this.getDoNotTrack());return a},adBlockKey:function(a){a.push(this.getAdBlock());return a},hasLiedLanguagesKey:function(a){a.push(this.getHasLiedLanguages());return a},hasLiedResolutionKey:function(a){a.push(this.getHasLiedResolution());return a},hasLiedOsKey:function(a){a.push(this.getHasLiedOs());return a},hasLiedBrowserKey:function(a){a.push(this.getHasLiedBrowser());return a},pluginsKey:function(a){this.isIE()?a.push(this.getIEPluginsString()):a.push(this.getRegularPluginsString()); return a},getRegularPluginsString:function(){for(var a=[],b=0,c=navigator.plugins.length;b<c;b++)a.push(navigator.plugins[b]);this.pluginsShouldBeSorted()&&(a=a.sort(function(a,b){return a.name>b.name?1:a.name<b.name?-1:0}));return this.map(a,function(a){var b=this.map(a,function(a){return[a.type,a.suffixes].join("~")}).join(",");return[a.name,a.description,b].join("::")},this).join(";")},getIEPluginsString:function(){return window.ActiveXObject?this.map("AcroPDF.PDF;Adodb.Stream;AgControl.AgControl;DevalVRXCtrl.DevalVRXCtrl.1;MacromediaFlashPaper.MacromediaFlashPaper;Msxml2.DOMDocument;Msxml2.XMLHTTP;PDF.PdfCtrl;QuickTime.QuickTime;QuickTimeCheckObject.QuickTimeCheck.1;RealPlayer;RealPlayer.RealPlayer(tm) ActiveX Control (32-bit);RealVideo.RealVideo(tm) ActiveX Control (32-bit);Scripting.Dictionary;SWCtl.SWCtl;Shell.UIHelper;ShockwaveFlash.ShockwaveFlash;Skype.Detection;TDCCtl.TDCCtl;WMPlayer.OCX;rmocx.RealPlayer G2 Control;rmocx.RealPlayer G2 Control.1".split(";"), function(a){try{return new ActiveXObject(a),a}catch(b){return null}}).join(";"):""},pluginsShouldBeSorted:function(){for(var a=!1,b=0,c=this.options.sortPluginsFor.length;b<c;b++)if(navigator.userAgent.match(this.options.sortPluginsFor[b])){a=!0;break}return a},touchSupportKey:function(a){a.push(this.getTouchSupport());return a},hasSessionStorage:function(){try{return!!window.sessionStorage}catch(a){return!0}},hasLocalStorage:function(){try{return!!window.localStorage}catch(a){return!0}},hasIndexedDB:function(){return!!window.indexedDB}, getNavigatorCpuClass:function(){return navigator.cpuClass?"navigatorCpuClass: "+navigator.cpuClass:"navigatorCpuClass: unknown"},getNavigatorPlatform:function(){return navigator.platform?"navigatorPlatform: "+navigator.platform:"navigatorPlatform: unknown"},getDoNotTrack:function(){return navigator.doNotTrack?"doNotTrack: "+navigator.doNotTrack:"doNotTrack: unknown"},getTouchSupport:function(){var a=0,b=!1;"undefined"!==typeof navigator.maxTouchPoints?a=navigator.maxTouchPoints:"undefined"!==typeof navigator.msMaxTouchPoints&& (a=navigator.msMaxTouchPoints);try{document.createEvent("TouchEvent"),b=!0}catch(c){}return[a,b,"ontouchstart"in window]},getAdBlock:function(){var a=document.createElement("div");a.setAttribute("id","ads");document.body.appendChild(a);return document.getElementById("ads")?!1:!0},getHasLiedLanguages:function(){if("undefined"!==typeof navigator.languages)try{if(navigator.languages[0].substr(0,2)!==navigator.language.substr(0,2))return!0}catch(a){return!0}return!1},getHasLiedResolution:function(){return screen.width< screen.availWidth||screen.height<screen.availHeight?!0:!1},getHasLiedOs:function(){var a=navigator.userAgent,b=navigator.oscpu,c=navigator.platform,a=0<=a.toLowerCase().indexOf("windows phone")?"Windows Phone":0<=a.toLowerCase().indexOf("win")?"Windows":0<=a.toLowerCase().indexOf("android")?"Android":0<=a.toLowerCase().indexOf("linux")?"Linux":0<=a.toLowerCase().indexOf("iPhone")||0<=a.toLowerCase().indexOf("iPad")?"iOS":0<=a.toLowerCase().indexOf("mac")?"Mac":"Other";return("ontouchstart"in window|| 0<navigator.maxTouchPoints||0<navigator.msMaxTouchPoints)&&"Windows Phone"!==a&&"Android"!==a&&"iOS"!==a&&"Other"!==a||"undefined"!==typeof b&&(0<=b.toLowerCase().indexOf("win")&&"Windows"!==a&&"Windows Phone"!==a||0<=b.toLowerCase().indexOf("linux")&&"Linux"!==a&&"Android"!==a||0<=b.toLowerCase().indexOf("mac")&&"Mac"!==a&&"iOS"!==a||0===b.toLowerCase().indexOf("win")&&0===b.toLowerCase().indexOf("linux")&&0<=b.toLowerCase().indexOf("mac")&&"other"!==a)||0<=c.toLowerCase().indexOf("win")&&"Windows"!== a&&"Windows Phone"!==a||(0<=c.toLowerCase().indexOf("linux")||0<=c.toLowerCase().indexOf("android")||0<=c.toLowerCase().indexOf("pike"))&&"Linux"!==a&&"Android"!==a||(0<=c.toLowerCase().indexOf("mac")||0<=c.toLowerCase().indexOf("ipad")||0<=c.toLowerCase().indexOf("ipod")||0<=c.toLowerCase().indexOf("iphone"))&&"Mac"!==a&&"iOS"!==a||0===c.toLowerCase().indexOf("win")&&0===c.toLowerCase().indexOf("linux")&&0<=c.toLowerCase().indexOf("mac")&&"other"!==a?!0:"undefined"===typeof navigator.plugins&&"Windows"!== a&&"Windows Phone"!==a?!0:!1},getHasLiedBrowser:function(){var a=navigator.userAgent,b=navigator.productSub,a=0<=a.toLowerCase().indexOf("firefox")?"Firefox":0<=a.toLowerCase().indexOf("opera")||0<=a.toLowerCase().indexOf("opr")?"Opera":0<=a.toLowerCase().indexOf("chrome")?"Chrome":0<=a.toLowerCase().indexOf("safari")?"Safari":0<=a.toLowerCase().indexOf("trident")?"Internet Explorer":"Other";if(("Chrome"===a||"Safari"===a||"Opera"===a)&&"20030107"!==b)return!0;b=eval.toString().length;if(37===b&& "Safari"!==a&&"Firefox"!==a&&"Other"!==a||39===b&&"Internet Explorer"!==a&&"Other"!==a||33===b&&"Chrome"!==a&&"Opera"!==a&&"Other"!==a)return!0;var c;try{throw"a";}catch(g){try{g.toSource(),c=!0}catch(d){c=!1}}return c&&"Firefox"!==a&&"Other"!==a?!0:!1},isIE:function(){return"Microsoft Internet Explorer"===naviga
Opensource for universities, educational institutions, research, IT / technology companies, NGOs, administrations, foundations, public institutions, authorities, banks and insurance companies, and the automotive industry. The platform offers project planning and visualization, application management, release planning, product management, team collaboration, task management, bug tracking, and budget planning. With this open-source solution, the users can record all processes in one central location, create product roadmaps, record all processes in one central location; create project templates; use widgets to visualize project status and progress; create detailed release planning, share the information with team and collect feedback from customers and employees. Apart from this Gantt charts/timeline management; custom fields for work packages; meetings management; scrum (backlogs and task board); calendar, time tracking, cost reporting, budgeting, bug tracking, wiki; twp-factor authentication, and more are some other features community edition offers. In Premium functions, OpenProject includes agile boards, logo and color schemes, your own design and logo, user-defined fields, single sign-on, individual help texts, highlighting of attributes, and more. One can get a complete function comparison amidst three versions, on the official page of this project. Contents [show] Steps to install OpenProject in Ubuntu 20.04 LTS Linux server 1. Add PGP Key The packages to install OpenProject are not available directly using the base repository of Ubuntu 20.04, hence we have to add a repository provided by the developers of this software platform. Well, but the system always needs to ensure that the packages it is getting are authentic and coming only from the source of repository added for it. And for that, we need to add the PGP key used to sign the OpenProject packages. Copy Me wget -qO- https://dl.packager.io/srv/opf/openproject/key | sudo apt-key add - GPG key for OpenProject 2. Integrate OpenProject repository in Ubuntu 20.04 As I mentioned above that we need to add manually a repository to get the OpenProject packages for installation, therefore, for that run the following given command: Copy-Past whole block of given command: Copy Me sudo wget -O /etc/apt/sources.list.d/openproject.list https://dl.packager.io/srv/opf/openproject/stable/12/installer/ubuntu/20.04.repo Add openproject repository on Ubuntu 20.04 3. Run system update To let the system know we have added a new repository to get a third-party application, run once the system update command: Copy Me sudo apt update 4. Command to install OpenProject in Ubuntu 20.04 LTS Finally, all the key things we require to get the OpenProject have been set, it’s time to use the APT package manager to start the installation process. Copy Me sudo apt install openproject sudo apt install openproject ubuntu 20.04 linux server 5. Start configuring OpenProject Well, the installation has been completed but yet has to be configured to get its web interface up and running. To start the further configuration run the given command: Copy Me sudo openproject configure Select Default OpenProject Users from the Construction field can go for the BIM one. default openproject BIM 6. Configure PostgreSQL To store its data we need a database server, here the OpenProject offers you an option to automatically install “Postgres“, however, if you already have an installed Postgres somewhere or on the same server then you can go for “Use an existing PostgreSQL database” option. However, here we are going for “Install a new PostgreSQL server and database locally“. Select it, Okay, and then hit the Enter key. PostgreSQL Auto Install for OpenProject 7. Install Apache Webserver Next, we need a webserver to serve web pages of OpenProject over a network. Hence, the installation wizard will let you install the Apache webserver if it is not already. install apache2 server Set Fully Qualified domain To access the OpenProject using FQDN, mention the same here. For example, here we are using demo.how2shout.com. You can use whatever you have. Alternatively, if you want to access it using a server IP address then mention that instead of a domain name. set fully qualified domain for OpenProject on Ubuntu Server Path (optional) This is optional. If you want to access your OpenProject web interface under some folder then you can mention it here. For example, let say you already have some website running on your server and to access it you are using your root domain then we cannot use the same domain to access another web platform. Therefore, to solve we can install another website under a subfolder. And the name of that subfolder you can mention here. server path prefix 8. Server SSL Those who already have SSL for the domain they want to use with OpenProject, do not need to install a new SSL certificate, even the ones who are using either Let’s Encrypt or Cloudflare. However, if you don’t have any existing SSL certificate then of course go for the Yes option otherwise NO. Server SSL for Project management Application 9. Install Subversion Just select the “Install Subversion repository support”. Subversion support Again hit the Enter key to set the default path and then install Git repository support, if you want. 10. STMP for Sending Emails Users who want to send emails to others from the web interface of OpenProject need to configure either SendMail or SMTP. We recommend using SMTP to route mail through your mail servers. Select it and configure the same. Or else just SKIP who don’t require emails service, right now. Next, select to install Memcache server for better cache performance or just skip if you don’t need it. Install a new memcached server Wait for a few minutes and the OpenProject open source project management will be on your server. 11. Access OpenProject Web interface Once the installation is completed, it’s time to access the Web interface of OpenProject to start managing our project through it. So, open any web browser on your local system that can access the server IP address where OpenProject is installed. In the URL either type the server IP address or Fully Qualified domain name associated with it. http://server-ip-address or http://your-domain.com If you have installed the OpenProject not in the root directory and with some server suffix or in simple words mentioned the folder name you have assigned during the installation of this project management platform. example: http://server-ip-address/your-sub-folder or http://your-domain.com/your-sub-foler Note: Replace- your-domain. com with the Domain you have added to use with OpenProject while configuring it. Whereas the sub-folder is the Server path suffix if you have mentioned while setting it up. Dashboard of project management Linux 12. Sign-in or Login OpenProject backend Now, let’s log in to the backend. The default username is admin and the password is also admin. Login openProject Backend Admin Change the default Admin password to something strong. Change Admin User 13. Admin Dashboard Finally, you have successfully installed the OpenProject on your Ubuntu 20.04 LTS Linux. Now you can start going through its learning curves to efficiently manage your projects. For more information once can visit its documentation page. OpenProject Installed in Ubuntu 20.04 Linux 14. Video Tutorial Video Player 00:00 14:15 Other Articles: • Top 3 Command Line Ubuntu Package Manager tools • How to install Gparted on Ubuntu 20.04 LTS • How to install Bitwarden server on Ubuntu 20.04 • Install VNC Server on Ubuntu 20.04 | 18.04 RELATED POSTS DaloRADIUS and FreeRADIUS install on Ubuntu 20.04 serverHeyan Maurya UBUNTUInstall FreeRadius & web GUI daloRADIUS on Ubuntu 20.04 serverSet Default Kernel Version of UbuntuHeyan Maurya UBUNTUHow to change default kernel in Ubuntu 22.04 | 20.04 LTSWSL Ubuntu 22.04 LTS Jammy Jelly FIshHeyan Maurya UBUNTUHow to Upgrade WSL 2 or 1 Ubuntu 20.04 to 22.04 LTSGoogle Drive in Ubuntu 20.04 LTSHeyan Maurya UBUNTU4153 VIEWSHow to Setup and use Google Drive on Ubuntu 20.04 LEAVE A REPLY Comment Text* Name* Email* Website Save my name, email, and website in this browser for the next time I comment. This site uses Akismet to reduce spam. Learn how your comment data is processed.
thehuy2000
In this assignment you will write smallsh your own shell in C. smallsh will implement a subset of features of well-known shells, such as bash. Your program will Provide a prompt for running commands Handle blank lines and comments, which are lines beginning with the # character Provide expansion for the variable $$ Execute 3 commands exit, cd, and status via code built into the shell Execute other commands by creating new processes using a function from the exec family of functions Support input and output redirection Support running commands in foreground and background processes Implement custom handlers for 2 signals, SIGINT and SIGTSTP Learning Outcomes After successful completion of this assignment, you should be able to do the following Describe the Unix process API (Module 4, MLO 2) Write programs using the Unix process API (Module 4, MLO 3) Explain the concept of signals and their uses (Module 5, MLO 2) Write programs using the Unix API for signal handling (Module 5, MLO 3) Explain I/O redirection and write programs that can employ I/O redirection (Module 5, MLO 4) Program Functionality 1. The Command Prompt Use the colon : symbol as a prompt for each command line. The general syntax of a command line is: command [arg1 arg2 ...] [< input_file] [> output_file] [&] …where items in square brackets are optional. You can assume that a command is made up of words separated by spaces. The special symbols <, > and & are recognized, but they must be surrounded by spaces like other words. If the command is to be executed in the background, the last word must be &. If the & character appears anywhere else, just treat it as normal text. If standard input or output is to be redirected, the > or < words followed by a filename word must appear after all the arguments. Input redirection can appear before or after output redirection. Your shell does not need to support any quoting; so arguments with spaces inside them are not possible. We are also not implementing the pipe "|" operator. Your shell must support command lines with a maximum length of 2048 characters, and a maximum of 512 arguments. You do not need to do any error checking on the syntax of the command line. 2. Comments & Blank Lines Your shell should allow blank lines and comments. Any line that begins with the # character is a comment line and should be ignored. Mid-line comments, such as the C-style //, will not be supported. A blank line (one without any commands) should also do nothing. Your shell should just re-prompt for another command when it receives either a blank line or a comment line. 3. Expansion of Variable $$ Your program must expand any instance of "$$" in a command into the process ID of the smallsh itself. Your shell does not otherwise perform variable expansion. 4. Built-in Commands Your shell will support three built-in commands: exit, cd, and status. These three built-in commands are the only ones that your shell will handle itself - all others are simply passed on to a member of the exec() family of functions. You do not have to support input/output redirection for these built in commands These commands do not have to set any exit status. If the user tries to run one of these built-in commands in the background with the & option, ignore that option and run the command in the foreground anyway (i.e. don't display an error, just run the command in the foreground). exit The exit command exits your shell. It takes no arguments. When this command is run, your shell must kill any other processes or jobs that your shell has started before it terminates itself. cd The cd command changes the working directory of smallsh. By itself - with no arguments - it changes to the directory specified in the HOME environment variable This is typically not the location where smallsh was executed from, unless your shell executable is located in the HOME directory, in which case these are the same. This command can also take one argument: the path of a directory to change to. Your cd command should support both absolute and relative paths. status The status command prints out either the exit status or the terminating signal of the last foreground process ran by your shell. If this command is run before any foreground command is run, then it should simply return the exit status 0. The three built-in shell commands do not count as foreground processes for the purposes of this built-in command - i.e., status should ignore built-in commands. 5. Executing Other Commands Your shell will execute any commands other than the 3 built-in command by using fork(), exec() and waitpid() Whenever a non-built in command is received, the parent (i.e., smallsh) will fork off a child. The child will use a function from the exec() family of functions to run the command. Your shell should use the PATH variable to look for non-built in commands, and it should allow shell scripts to be executed If a command fails because the shell could not find the command to run, then the shell will print an error message and set the exit status to 1 A child process must terminate after running a command (whether the command is successful or it fails). 6. Input & Output Redirection You must do any input and/or output redirection using dup2(). The redirection must be done before using exec() to run the command. An input file redirected via stdin should be opened for reading only; if your shell cannot open the file for reading, it should print an error message and set the exit status to 1 (but don't exit the shell). Similarly, an output file redirected via stdout should be opened for writing only; it should be truncated if it already exists or created if it does not exist. If your shell cannot open the output file it should print an error message and set the exit status to 1 (but don't exit the shell). Both stdin and stdout for a command can be redirected at the same time (see example below). 7. Executing Commands in Foreground & Background Foreground Commands Any command without an & at the end must be run as a foreground command and the shell must wait for the completion of the command before prompting for the next command. For such commands, the parent shell does NOT return command line access and control to the user until the child terminates. Background Commands Any non built-in command with an & at the end must be run as a background command and the shell must not wait for such a command to complete. For such commands, the parent must return command line access and control to the user immediately after forking off the child. The shell will print the process id of a background process when it begins. When a background process terminates, a message showing the process id and exit status will be printed. This message must be printed just before the prompt for a new command is displayed. If the user doesn't redirect the standard input for a background command, then standard input should be redirected to /dev/null If the user doesn't redirect the standard output for a background command, then standard output should be redirected to /dev/null 8. Signals SIGINT & SIGTSTP SIGINT A CTRL-C command from the keyboard sends a SIGINT signal to the parent process and all children at the same time (this is a built-in part of Linux). Your shell, i.e., the parent process, must ignore SIGINT Any children running as background processes must ignore SIGINT A child running as a foreground process must terminate itself when it receives SIGINT The parent must not attempt to terminate the foreground child process; instead the foreground child (if any) must terminate itself on receipt of this signal. If a child foreground process is killed by a signal, the parent must immediately print out the number of the signal that killed it's foreground child process (see the example) before prompting the user for the next command. SIGTSTP A CTRL-Z command from the keyboard sends a SIGTSTP signal to your parent shell process and all children at the same time (this is a built-in part of Linux). A child, if any, running as a foreground process must ignore SIGTSTP. Any children running as background process must ignore SIGTSTP. When the parent process running the shell receives SIGTSTP The shell must display an informative message (see below) immediately if it's sitting at the prompt, or immediately after any currently running foreground process has terminated The shell then enters a state where subsequent commands can no longer be run in the background. In this state, the & operator should simply be ignored, i.e., all such commands are run as if they were foreground processes. If the user sends SIGTSTP again, then your shell will Display another informative message (see below) immediately after any currently running foreground process terminates The shell then returns back to the normal condition where the & operator is once again honored for subsequent commands, allowing them to be executed in the background. See the example below for usage and the exact syntax which you must use for these two informative messages. Sample Program Execution Here is an example run using smallsh. Note that CTRL-C has no effect towards the bottom of the example, when it's used while sitting at the command prompt: $ smallsh : ls junk smallsh smallsh.c : ls > junk : status exit value 0 : cat junk junk smallsh smallsh.c : wc < junk > junk2 : wc < junk 3 3 23 : test -f badfile : status exit value 1 : wc < badfile cannot open badfile for input : status exit value 1 : badfile badfile: no such file or directory : sleep 5 ^Cterminated by signal 2 : status & terminated by signal 2 : sleep 15 & background pid is 4923 : ps PID TTY TIME CMD 4923 pts/0 00:00:00 sleep 4564 pts/0 00:00:03 bash 4867 pts/0 00:01:32 smallsh 4927 pts/0 00:00:00 ps : : # that was a blank command line, this is a comment line : background pid 4923 is done: exit value 0 : # the background sleep finally finished : sleep 30 & background pid is 4941 : kill -15 4941 background pid 4941 is done: terminated by signal 15 : pwd /nfs/stak/users/chaudhrn/CS344/prog3 : cd : pwd /nfs/stak/users/chaudhrn : cd CS344 : pwd /nfs/stak/users/chaudhrn/CS344 : echo 4867 4867 : echo $$ 4867 : ^C^Z Entering foreground-only mode (& is now ignored) : date Mon Jan 2 11:24:33 PST 2017 : sleep 5 & : date Mon Jan 2 11:24:38 PST 2017 : ^Z Exiting foreground-only mode : date Mon Jan 2 11:24:39 PST 2017 : sleep 5 & background pid is 4963 : date Mon Jan 2 11:24:39 PST 2017 : exit $ Hints & Resources 1. The Command Prompt Be sure you flush out the output buffers each time you print, as the text that you're outputting may not reach the screen until you do in this kind of interactive program. To do this, call fflush() immediately after each and every time you output text. Consider defining a struct in which you can store all the different elements included in a command. Then as you parse a command, you can set the value of members of a variable of this struct type. 2. Comments & Blank Lines This should be simple. 3. Expansion of Variable $$ Here are examples to illustrate the required behavior. Suppose the process ID of smallsh is 179. Then The string foo$$$$ in the command is converted to foo179179 The string foo$$$ in the command is converted to foo179$ 4. Built-in Commands It is recommended that you program the built-in commands first, before tackling the commands that require fork(), exec() and waitpid(). The built-in commands don't set the value of status. This means that however you are keeping track of the status, don't change it after the execution of a built-in command. A process can use chdir() (Links to an external site.) to change its directory. To test the implementation of the cd command in smallsh, don't use getenv("PWD") because it will not give you the correct result. Instead, you can use the function getcwd() (Links to an external site.). Here is why getenv("PWD") doesn't give you the correct result: PWD is an environment variable. As discussed in Module 4, Exploration: Environment "When a parent process forks a child process, the child process inherits the environment of its parent process." When you run smallsh from a bash shell, smallsh inherits the environment of this bash shell The value of PWD in the bash shell is set to the directory in which you are when you run the command to start smallsh smallsh inherits this value of PWD. When you change the directory in smallsh, it doesn't update the value of the environment variable PWD 5. Executing Other Commands Note that if exec() is told to execute something that it cannot do, like run a program that doesn't exist, it will fail, and return the reason why. In this case, your shell should indicate to the user that a command could not be executed (which you know because exec() returned an error), and set the value retrieved by the built-in status command to 1. Make sure that the child process that has had an exec() call fail terminates itself, or else it often loops back up to the top and tries to become a parent shell. This is easy to spot: if the output of the grading script seems to be repeating itself, then you've likely got a child process that didn't terminate after a failed exec(). You can choose any function in the exec() family. However, we suggest that using either execlp() or execvp() will be simplest because of the following reasons smallsh doesn't need to pass a new environment to the program. So the additional functionality provided by the exec() functions with names ending in e is not required. One example of a command that smallsh needs to run is ls (the graders will try this command at the start of the testing). Running this command will be a lot easier using the exec() functions that search the PATH environment variable. 6. Input & Output Redirection We recommend that the needed input/output redirection should be done in the child process. Note that after using dup2() to set up the redirection, the redirection symbol and redirection destination/source are NOT passed into the exec command For example, if the command given is ls > junk, then you handle the redirection to "junk" with dup2() and then simply pass ls into exec(). 7. Executing Commands in Foreground & Background Foreground Commands For a foreground command, it is recommend to have the parent simply call waitpid() on the child, while it waits. Background Commands The shell should respect the input and output redirection operators for a command regardless of whether the command is to be run in the foreground or the background. This means that a background command should use /dev/null for input only when input redirection is not specified in the command. Similarly a background command should use /dev/null for output only when output redirection is not specified in the command. Your parent shell will need to periodically check for the background child processes to complete, so that they can be cleaned up, as the shell continues to run and process commands. Consider storing the PIDs of non-completed background processes in an array. Then every time BEFORE returning access to the command line to the user, you can check the status of these processes using waitpid(...NOHANG...). Alternatively, you may use a signal handler to immediately wait() for child processes that terminate, as opposed to periodically checking a list of started background processes The time to print out when these background processes have completed is just BEFORE command line access and control are returned to the user, every time that happens. 8. Signals SIGINT & SIGTSTP Reentrancy is important when we consider that signal handlers cause jumps in execution that cause problems with certain functions. Note that the printf() family of functions is NOT reentrant. In your signal handlers, when outputting text, you must use other output functions! What to turn in? You can only use C for coding this assignment and you must use the gcc compiler. You can use C99 or GNU99 standard or the default standard used by the gcc installation on os1. Your assignment will be graded on os1. Submit a single zip file with all your code, which can be in as many different files as you want. This zip file must be named youronid_program3.zip where youronid should be replaced by your own ONID. E.g., if chaudhrn was submitting the assignment, the file must be named chaudhrn_program3.zip. In the zip file, you must include a text file called README.txt that contains instructions on how to compile your code using gcc to create an executable file that must be named smallsh. Your zip file should not contain any extraneous files. In particular, make sure not to zip up the __MACOSX directories. When you resubmit a file in Canvas, Canvas can attach a suffix to the file, e.g., the file name may become chaudhrn_program3-1.zip. Don't worry about this name change as no points will be deducted because of this. Caution During the development of this program, take extra care to only do your work on os1, our class server, as your software will likely negatively impact whatever machine it runs on, especially before it is finished. If you cause trouble on one of the non-class, public servers, it could hurt your grade! If you are having trouble logging in to any of our EECS servers because of runaway processes, please use this page to kill off any programs running on your account that might be blocking your access: T.E.A.C.H. - The Engineering Accounts and Classes HomepageLinks to an external site. Grading Criteria This assignment is worth 20% of your grade and there are 180 points available for it. 170 points are available in the test script, while the final 10 points will be based on your style, readability, and commenting. Comment well, often, and verbosely: we want to see that you are telling us WHY you are doing things, in addition to telling us WHAT you are doing. Once the program is compiled, according to your specifications given in README.txt, your shell will be executed to run a few sample commands against (ls, status, exit, in that order). If the program does not successfully work on those commands, it will receive a zero. If it works, then the grading script will be run against it (as detailed below) for final grading. Points will be assigned according to the grading script running on our class server only. Grading Method Here is the grading script p3testscript. It is a bash script that starts the smallsh program and runs commands on smallsh's command line. Most of the commands run by the grading script are very similar to the commands shown in the section Sample Program Execution. You can open the script in a text editor. The comments in the script will show you the points for individual items. Use the script to prepare for your grade, as this is how it's being earned. To run the script, place it in the same directory as your compiled shell, chmod it (chmod +x ./p3testscript) and run this command from a bash prompt: $ ./p3testscript 2>&1 or $ ./p3testscript 2>&1 | more or $ ./p3testscript > mytestresults 2>&1 Do not worry if the spacing, indentation, or look of the output of the script is different than when you run it interactively: that won’t affect your grade. The script may add extra colons at the beginning of lines or do other weird things, like put output about terminating processes further down the script than you intended. If your program does not work with the grading script, and you instead request that we grade your script by hand, we will apply a 15% reduction to your final score. So from the very beginning, make sure that you work with the grading script on our class server!
Are you looking for things to do after installing Debian? These 10 things to do after installing Debian 9 will help you make your Debian desktop experience better.
JoshBell302
In this assignment you will write smallsh your own shell in C. smallsh will implement a subset of features of well-known shells, such as bash. Your program will Provide a prompt for running commands Handle blank lines and comments, which are lines beginning with the # character Provide expansion for the variable $$ Execute 3 commands exit, cd, and status via code built into the shell Execute other commands by creating new processes using a function from the exec family of functions Support input and output redirection Support running commands in foreground and background processes Implement custom handlers for 2 signals, SIGINT and SIGTSTP Learning Outcomes After successful completion of this assignment, you should be able to do the following Describe the Unix process API (Module 4, MLO 2) Write programs using the Unix process API (Module 4, MLO 3) Explain the concept of signals and their uses (Module 5, MLO 2) Write programs using the Unix API for signal handling (Module 5, MLO 3) Explain I/O redirection and write programs that can employ I/O redirection (Module 5, MLO 4) Program Functionality 1. The Command Prompt Use the colon : symbol as a prompt for each command line. The general syntax of a command line is: command [arg1 arg2 ...] [< input_file] [> output_file] [&] …where items in square brackets are optional. You can assume that a command is made up of words separated by spaces. The special symbols <, > and & are recognized, but they must be surrounded by spaces like other words. If the command is to be executed in the background, the last word must be &. If the & character appears anywhere else, just treat it as normal text. If standard input or output is to be redirected, the > or < words followed by a filename word must appear after all the arguments. Input redirection can appear before or after output redirection. Your shell does not need to support any quoting; so arguments with spaces inside them are not possible. We are also not implementing the pipe "|" operator. Your shell must support command lines with a maximum length of 2048 characters, and a maximum of 512 arguments. You do not need to do any error checking on the syntax of the command line. 2. Comments & Blank Lines Your shell should allow blank lines and comments. Any line that begins with the # character is a comment line and should be ignored. Mid-line comments, such as the C-style //, will not be supported. A blank line (one without any commands) should also do nothing. Your shell should just re-prompt for another command when it receives either a blank line or a comment line. 3. Expansion of Variable $$ Your program must expand any instance of "$$" in a command into the process ID of the smallsh itself. Your shell does not otherwise perform variable expansion. 4. Built-in Commands Your shell will support three built-in commands: exit, cd, and status. These three built-in commands are the only ones that your shell will handle itself - all others are simply passed on to a member of the exec() family of functions. You do not have to support input/output redirection for these built in commands These commands do not have to set any exit status. If the user tries to run one of these built-in commands in the background with the & option, ignore that option and run the command in the foreground anyway (i.e. don't display an error, just run the command in the foreground). exit The exit command exits your shell. It takes no arguments. When this command is run, your shell must kill any other processes or jobs that your shell has started before it terminates itself. cd The cd command changes the working directory of smallsh. By itself - with no arguments - it changes to the directory specified in the HOME environment variable This is typically not the location where smallsh was executed from, unless your shell executable is located in the HOME directory, in which case these are the same. This command can also take one argument: the path of a directory to change to. Your cd command should support both absolute and relative paths. status The status command prints out either the exit status or the terminating signal of the last foreground process ran by your shell. If this command is run before any foreground command is run, then it should simply return the exit status 0. The three built-in shell commands do not count as foreground processes for the purposes of this built-in command - i.e., status should ignore built-in commands. 5. Executing Other Commands Your shell will execute any commands other than the 3 built-in command by using fork(), exec() and waitpid() Whenever a non-built in command is received, the parent (i.e., smallsh) will fork off a child. The child will use a function from the exec() family of functions to run the command. Your shell should use the PATH variable to look for non-built in commands, and it should allow shell scripts to be executed If a command fails because the shell could not find the command to run, then the shell will print an error message and set the exit status to 1 A child process must terminate after running a command (whether the command is successful or it fails). 6. Input & Output Redirection You must do any input and/or output redirection using dup2(). The redirection must be done before using exec() to run the command. An input file redirected via stdin should be opened for reading only; if your shell cannot open the file for reading, it should print an error message and set the exit status to 1 (but don't exit the shell). Similarly, an output file redirected via stdout should be opened for writing only; it should be truncated if it already exists or created if it does not exist. If your shell cannot open the output file it should print an error message and set the exit status to 1 (but don't exit the shell). Both stdin and stdout for a command can be redirected at the same time (see example below). 7. Executing Commands in Foreground & Background Foreground Commands Any command without an & at the end must be run as a foreground command and the shell must wait for the completion of the command before prompting for the next command. For such commands, the parent shell does NOT return command line access and control to the user until the child terminates. Background Commands Any non built-in command with an & at the end must be run as a background command and the shell must not wait for such a command to complete. For such commands, the parent must return command line access and control to the user immediately after forking off the child. The shell will print the process id of a background process when it begins. When a background process terminates, a message showing the process id and exit status will be printed. This message must be printed just before the prompt for a new command is displayed. If the user doesn't redirect the standard input for a background command, then standard input should be redirected to /dev/null If the user doesn't redirect the standard output for a background command, then standard output should be redirected to /dev/null 8. Signals SIGINT & SIGTSTP SIGINT A CTRL-C command from the keyboard sends a SIGINT signal to the parent process and all children at the same time (this is a built-in part of Linux). Your shell, i.e., the parent process, must ignore SIGINT Any children running as background processes must ignore SIGINT A child running as a foreground process must terminate itself when it receives SIGINT The parent must not attempt to terminate the foreground child process; instead the foreground child (if any) must terminate itself on receipt of this signal. If a child foreground process is killed by a signal, the parent must immediately print out the number of the signal that killed it's foreground child process (see the example) before prompting the user for the next command. SIGTSTP A CTRL-Z command from the keyboard sends a SIGTSTP signal to your parent shell process and all children at the same time (this is a built-in part of Linux). A child, if any, running as a foreground process must ignore SIGTSTP. Any children running as background process must ignore SIGTSTP. When the parent process running the shell receives SIGTSTP The shell must display an informative message (see below) immediately if it's sitting at the prompt, or immediately after any currently running foreground process has terminated The shell then enters a state where subsequent commands can no longer be run in the background. In this state, the & operator should simply be ignored, i.e., all such commands are run as if they were foreground processes. If the user sends SIGTSTP again, then your shell will Display another informative message (see below) immediately after any currently running foreground process terminates The shell then returns back to the normal condition where the & operator is once again honored for subsequent commands, allowing them to be executed in the background. See the example below for usage and the exact syntax which you must use for these two informative messages. Sample Program Execution Here is an example run using smallsh. Note that CTRL-C has no effect towards the bottom of the example, when it's used while sitting at the command prompt: $ smallsh : ls junk smallsh smallsh.c : ls > junk : status exit value 0 : cat junk junk smallsh smallsh.c : wc < junk > junk2 : wc < junk 3 3 23 : test -f badfile : status exit value 1 : wc < badfile cannot open badfile for input : status exit value 1 : badfile badfile: no such file or directory : sleep 5 ^Cterminated by signal 2 : status & terminated by signal 2 : sleep 15 & background pid is 4923 : ps PID TTY TIME CMD 4923 pts/0 00:00:00 sleep 4564 pts/0 00:00:03 bash 4867 pts/0 00:01:32 smallsh 4927 pts/0 00:00:00 ps : : # that was a blank command line, this is a comment line : background pid 4923 is done: exit value 0 : # the background sleep finally finished : sleep 30 & background pid is 4941 : kill -15 4941 background pid 4941 is done: terminated by signal 15 : pwd /nfs/stak/users/chaudhrn/CS344/prog3 : cd : pwd /nfs/stak/users/chaudhrn : cd CS344 : pwd /nfs/stak/users/chaudhrn/CS344 : echo 4867 4867 : echo $$ 4867 : ^C^Z Entering foreground-only mode (& is now ignored) : date Mon Jan 2 11:24:33 PST 2017 : sleep 5 & : date Mon Jan 2 11:24:38 PST 2017 : ^Z Exiting foreground-only mode : date Mon Jan 2 11:24:39 PST 2017 : sleep 5 & background pid is 4963 : date Mon Jan 2 11:24:39 PST 2017 : exit $ Hints & Resources 1. The Command Prompt Be sure you flush out the output buffers each time you print, as the text that you're outputting may not reach the screen until you do in this kind of interactive program. To do this, call fflush() immediately after each and every time you output text. Consider defining a struct in which you can store all the different elements included in a command. Then as you parse a command, you can set the value of members of a variable of this struct type. 2. Comments & Blank Lines This should be simple. 3. Expansion of Variable $$ Here are examples to illustrate the required behavior. Suppose the process ID of smallsh is 179. Then The string foo$$$$ in the command is converted to foo179179 The string foo$$$ in the command is converted to foo179$ 4. Built-in Commands It is recommended that you program the built-in commands first, before tackling the commands that require fork(), exec() and waitpid(). The built-in commands don't set the value of status. This means that however you are keeping track of the status, don't change it after the execution of a built-in command. A process can use chdir() (Links to an external site.) to change its directory. To test the implementation of the cd command in smallsh, don't use getenv("PWD") because it will not give you the correct result. Instead, you can use the function getcwd() (Links to an external site.). Here is why getenv("PWD") doesn't give you the correct result: PWD is an environment variable. As discussed in Module 4, Exploration: Environment "When a parent process forks a child process, the child process inherits the environment of its parent process." When you run smallsh from a bash shell, smallsh inherits the environment of this bash shell The value of PWD in the bash shell is set to the directory in which you are when you run the command to start smallsh smallsh inherits this value of PWD. When you change the directory in smallsh, it doesn't update the value of the environment variable PWD 5. Executing Other Commands Note that if exec() is told to execute something that it cannot do, like run a program that doesn't exist, it will fail, and return the reason why. In this case, your shell should indicate to the user that a command could not be executed (which you know because exec() returned an error), and set the value retrieved by the built-in status command to 1. Make sure that the child process that has had an exec() call fail terminates itself, or else it often loops back up to the top and tries to become a parent shell. This is easy to spot: if the output of the grading script seems to be repeating itself, then you've likely got a child process that didn't terminate after a failed exec(). You can choose any function in the exec() family. However, we suggest that using either execlp() or execvp() will be simplest because of the following reasons smallsh doesn't need to pass a new environment to the program. So the additional functionality provided by the exec() functions with names ending in e is not required. One example of a command that smallsh needs to run is ls (the graders will try this command at the start of the testing). Running this command will be a lot easier using the exec() functions that search the PATH environment variable. 6. Input & Output Redirection We recommend that the needed input/output redirection should be done in the child process. Note that after using dup2() to set up the redirection, the redirection symbol and redirection destination/source are NOT passed into the exec command For example, if the command given is ls > junk, then you handle the redirection to "junk" with dup2() and then simply pass ls into exec(). 7. Executing Commands in Foreground & Background Foreground Commands For a foreground command, it is recommend to have the parent simply call waitpid() on the child, while it waits. Background Commands The shell should respect the input and output redirection operators for a command regardless of whether the command is to be run in the foreground or the background. This means that a background command should use /dev/null for input only when input redirection is not specified in the command. Similarly a background command should use /dev/null for output only when output redirection is not specified in the command. Your parent shell will need to periodically check for the background child processes to complete, so that they can be cleaned up, as the shell continues to run and process commands. Consider storing the PIDs of non-completed background processes in an array. Then every time BEFORE returning access to the command line to the user, you can check the status of these processes using waitpid(...NOHANG...). Alternatively, you may use a signal handler to immediately wait() for child processes that terminate, as opposed to periodically checking a list of started background processes The time to print out when these background processes have completed is just BEFORE command line access and control are returned to the user, every time that happens. 8. Signals SIGINT & SIGTSTP Reentrancy is important when we consider that signal handlers cause jumps in execution that cause problems with certain functions. Note that the printf() family of functions is NOT reentrant. In your signal handlers, when outputting text, you must use other output functions! What to turn in? You can only use C for coding this assignment and you must use the gcc compiler. You can use C99 or GNU99 standard or the default standard used by the gcc installation on os1. Your assignment will be graded on os1. Submit a single zip file with all your code, which can be in as many different files as you want. This zip file must be named youronid_program3.zip where youronid should be replaced by your own ONID. E.g., if chaudhrn was submitting the assignment, the file must be named chaudhrn_program3.zip. In the zip file, you must include a text file called README.txt that contains instructions on how to compile your code using gcc to create an executable file that must be named smallsh. Your zip file should not contain any extraneous files. In particular, make sure not to zip up the __MACOSX directories. When you resubmit a file in Canvas, Canvas can attach a suffix to the file, e.g., the file name may become chaudhrn_program3-1.zip. Don't worry about this name change as no points will be deducted because of this. Caution During the development of this program, take extra care to only do your work on os1, our class server, as your software will likely negatively impact whatever machine it runs on, especially before it is finished. If you cause trouble on one of the non-class, public servers, it could hurt your grade! If you are having trouble logging in to any of our EECS servers because of runaway processes, please use this page to kill off any programs running on your account that might be blocking your access: T.E.A.C.H. - The Engineering Accounts and Classes HomepageLinks to an external site. Grading Criteria This assignment is worth 20% of your grade and there are 180 points available for it. 170 points are available in the test script, while the final 10 points will be based on your style, readability, and commenting. Comment well, often, and verbosely: we want to see that you are telling us WHY you are doing things, in addition to telling us WHAT you are doing. Once the program is compiled, according to your specifications given in README.txt, your shell will be executed to run a few sample commands against (ls, status, exit, in that order). If the program does not successfully work on those commands, it will receive a zero. If it works, then the grading script will be run against it (as detailed below) for final grading. Points will be assigned according to the grading script running on our class server only. Grading Method Here is the grading script p3testscript. It is a bash script that starts the smallsh program and runs commands on smallsh's command line. Most of the commands run by the grading script are very similar to the commands shown in the section Sample Program Execution. You can open the script in a text editor. The comments in the script will show you the points for individual items. Use the script to prepare for your grade, as this is how it's being earned. To run the script, place it in the same directory as your compiled shell, chmod it (chmod +x ./p3testscript) and run this command from a bash prompt: $ ./p3testscript 2>&1 or $ ./p3testscript 2>&1 | more or $ ./p3testscript > mytestresults 2>&1 Do not worry if the spacing, indentation, or look of the output of the script is different than when you run it interactively: that won’t affect your grade. The script may add extra colons at the beginning of lines or do other weird things, like put output about terminating processes further down the script than you intended. If your program does not work with the grading script, and you instead request that we grade your script by hand, we will apply a 15% reduction to your final score. So from the very beginning, make sure that you work with the grading script on our class server!
AdekoyaOlatolokikiAyomide
How to share data with a statistician This is a guide for anyone who needs to share data with a statistician or data scientist. The target audiences I have in mind are: Collaborators who need statisticians or data scientists to analyze data for them Students or postdocs in various disciplines looking for consulting advice Junior statistics students whose job it is to collate/clean/wrangle data sets The goals of this guide are to provide some instruction on the best way to share data to avoid the most common pitfalls and sources of delay in the transition from data collection to data analysis. The Leek group works with a large number of collaborators and the number one source of variation in the speed to results is the status of the data when they arrive at the Leek group. Based on my conversations with other statisticians this is true nearly universally. My strong feeling is that statisticians should be able to handle the data in whatever state they arrive. It is important to see the raw data, understand the steps in the processing pipeline, and be able to incorporate hidden sources of variability in one's data analysis. On the other hand, for many data types, the processing steps are well documented and standardized. So the work of converting the data from raw form to directly analyzable form can be performed before calling on a statistician. This can dramatically speed the turnaround time, since the statistician doesn't have to work through all the pre-processing steps first. What you should deliver to the statistician To facilitate the most efficient and timely analysis this is the information you should pass to a statistician: The raw data. A tidy data set A code book describing each variable and its values in the tidy data set. An explicit and exact recipe you used to go from 1 -> 2,3 Let's look at each part of the data package you will transfer. The raw data It is critical that you include the rawest form of the data that you have access to. This ensures that data provenance can be maintained throughout the workflow. Here are some examples of the raw form of data: The strange binary file your measurement machine spits out The unformatted Excel file with 10 worksheets the company you contracted with sent you The complicated JSON data you got from scraping the Twitter API The hand-entered numbers you collected looking through a microscope You know the raw data are in the right format if you: Ran no software on the data Did not modify any of the data values You did not remove any data from the data set You did not summarize the data in any way If you made any modifications of the raw data it is not the raw form of the data. Reporting modified data as raw data is a very common way to slow down the analysis process, since the analyst will often have to do a forensic study of your data to figure out why the raw data looks weird. (Also imagine what would happen if new data arrived?) The tidy data set The general principles of tidy data are laid out by Hadley Wickham in this paper and this video. While both the paper and the video describe tidy data using R, the principles are more generally applicable: Each variable you measure should be in one column Each different observation of that variable should be in a different row There should be one table for each "kind" of variable If you have multiple tables, they should include a column in the table that allows them to be joined or merged While these are the hard and fast rules, there are a number of other things that will make your data set much easier to handle. First is to include a row at the top of each data table/spreadsheet that contains full row names. So if you measured age at diagnosis for patients, you would head that column with the name AgeAtDiagnosis instead of something like ADx or another abbreviation that may be hard for another person to understand. Here is an example of how this would work from genomics. Suppose that for 20 people you have collected gene expression measurements with RNA-sequencing. You have also collected demographic and clinical information about the patients including their age, treatment, and diagnosis. You would have one table/spreadsheet that contains the clinical/demographic information. It would have four columns (patient id, age, treatment, diagnosis) and 21 rows (a row with variable names, then one row for every patient). You would also have one spreadsheet for the summarized genomic data. Usually this type of data is summarized at the level of the number of counts per exon. Suppose you have 100,000 exons, then you would have a table/spreadsheet that had 21 rows (a row for gene names, and one row for each patient) and 100,001 columns (one row for patient ids and one row for each data type). If you are sharing your data with the collaborator in Excel, the tidy data should be in one Excel file per table. They should not have multiple worksheets, no macros should be applied to the data, and no columns/cells should be highlighted. Alternatively share the data in a CSV or TAB-delimited text file. (Beware however that reading CSV files into Excel can sometimes lead to non-reproducible handling of date and time variables.) The code book For almost any data set, the measurements you calculate will need to be described in more detail than you can or should sneak into the spreadsheet. The code book contains this information. At minimum it should contain: Information about the variables (including units!) in the data set not contained in the tidy data Information about the summary choices you made Information about the experimental study design you used In our genomics example, the analyst would want to know what the unit of measurement for each clinical/demographic variable is (age in years, treatment by name/dose, level of diagnosis and how heterogeneous). They would also want to know how you picked the exons you used for summarizing the genomic data (UCSC/Ensembl, etc.). They would also want to know any other information about how you did the data collection/study design. For example, are these the first 20 patients that walked into the clinic? Are they 20 highly selected patients by some characteristic like age? Are they randomized to treatments? A common format for this document is a Word file. There should be a section called "Study design" that has a thorough description of how you collected the data. There is a section called "Code book" that describes each variable and its units. How to code variables When you put variables into a spreadsheet there are several main categories you will run into depending on their data type: Continuous Ordinal Categorical Missing Censored Continuous variables are anything measured on a quantitative scale that could be any fractional number. An example would be something like weight measured in kg. Ordinal data are data that have a fixed, small (< 100) number of levels but are ordered. This could be for example survey responses where the choices are: poor, fair, good. Categorical data are data where there are multiple categories, but they aren't ordered. One example would be sex: male or female. This coding is attractive because it is self-documenting. Missing data are data that are unobserved and you don't know the mechanism. You should code missing values as NA. Censored data are data where you know the missingness mechanism on some level. Common examples are a measurement being below a detection limit or a patient being lost to follow-up. They should also be coded as NA when you don't have the data. But you should also add a new column to your tidy data called, "VariableNameCensored" which should have values of TRUE if censored and FALSE if not. In the code book you should explain why those values are missing. It is absolutely critical to report to the analyst if there is a reason you know about that some of the data are missing. You should also not impute/make up/ throw away missing observations. In general, try to avoid coding categorical or ordinal variables as numbers. When you enter the value for sex in the tidy data, it should be "male" or "female". The ordinal values in the data set should be "poor", "fair", and "good" not 1, 2 ,3. This will avoid potential mixups about which direction effects go and will help identify coding errors. Always encode every piece of information about your observations using text. For example, if you are storing data in Excel and use a form of colored text or cell background formatting to indicate information about an observation ("red variable entries were observed in experiment 1.") then this information will not be exported (and will be lost!) when the data is exported as raw text. Every piece of data should be encoded as actual text that can be exported. The instruction list/script You may have heard this before, but reproducibility is a big deal in computational science. That means, when you submit your paper, the reviewers and the rest of the world should be able to exactly replicate the analyses from raw data all the way to final results. If you are trying to be efficient, you will likely perform some summarization/data analysis steps before the data can be considered tidy. The ideal thing for you to do when performing summarization is to create a computer script (in R, Python, or something else) that takes the raw data as input and produces the tidy data you are sharing as output. You can try running your script a couple of times and see if the code produces the same output. In many cases, the person who collected the data has incentive to make it tidy for a statistician to speed the process of collaboration. They may not know how to code in a scripting language. In that case, what you should provide the statistician is something called pseudocode. It should look something like: Step 1 - take the raw file, run version 3.1.2 of summarize software with parameters a=1, b=2, c=3 Step 2 - run the software separately for each sample Step 3 - take column three of outputfile.out for each sample and that is the corresponding row in the output data set You should also include information about which system (Mac/Windows/Linux) you used the software on and whether you tried it more than once to confirm it gave the same results. Ideally, you will run this by a fellow student/labmate to confirm that they can obtain the same output file you did. What you should expect from the analyst When you turn over a properly tidied data set it dramatically decreases the workload on the statistician. So hopefully they will get back to you much sooner. But most careful statisticians will check your recipe, ask questions about steps you performed, and try to confirm that they can obtain the same tidy data that you did with, at minimum, spot checks. You should then expect from the statistician: An analysis script that performs each of the analyses (not just instructions) The exact computer code they used to run the analysis All output files/figures they generated. This is the information you will use in the supplement to establish reproducibility and precision of your results. Each of the steps in the analysis should be clearly explained and you should ask questions when you don't understand what the analyst did. It is the responsibility of both the statistician and the scientist to understand the statistical analysis. You may not be able to perform the exact analyses without the statistician's code, but you should be able to explain why the statistician performed each step to a labmate/your principal investigator. Contributors Jeff Leek - Wrote the initial version. L. Collado-Torres - Fixed typos, added links. Nick Reich - Added tips on storing data as text. Nick Horton - Minor wording suggestions.
tacticalafro
Let me start off by saying that I am a noob at all of this. I just threw crouton on my HP 14 Chromebook ($349 version with Haswell processor) and am currently dual-booting Linux 13.10. For some reason I am completely unable to use bluetooth on the Linux side of things...even though it works fine on Chrome OS. Thoughts/guidance/help?
adouble42
nemesis is an actively developed (hey, i'm still here, and i'll be more visibly so again soon, wrapping some other things up) freebsd, debian linux and Mac OS X (tested through 10.11) port based on TrueCrypt. right now it is largely truecrypt code, but per the license, it's not truecrypt.
cbool
############################################### # Trinity Core Auth Server configuration file # ############################################### [authserver] ################################################################################################### # SECTION INDEX # # EXAMPLE CONFIG # AUTH SERVER SETTINGS # MYSQL SETTINGS # LOGGING SYSTEM SETTINGS # ################################################################################################### ################################################################################################### # EXAMPLE CONFIG # # Variable # Description: Brief description what the variable is doing. # Important: Annotation for important things about this variable. # Example: "Example, i.e. if the value is a string" # Default: 10 - (Enabled|Comment|Variable name in case of grouped config options) # 0 - (Disabled|Comment|Variable name in case of grouped config options) # # Note to developers: # - Copy this example to keep the formatting. # - Line breaks should be at column 100. ################################################################################################### ################################################################################################### # AUTH SERVER SETTINGS # # LogsDir # Description: Logs directory setting. # Important: LogsDir needs to be quoted, as the string might contain space characters. # Logs directory must exists, or log file creation will be disabled. # Default: "" - (Log files will be stored in the current path) LogsDir = "Logs" # # MaxPingTime # Description: Time (in minutes) between database pings. # Default: 30 MaxPingTime = 30 # # RealmServerPort # Description: TCP port to reach the auth server. # Default: 3724 RealmServerPort = 3724 # # # BindIP # Description: Bind auth server to IP/hostname # Default: "0.0.0.0" - (Bind to all IPs on the system) BindIP = "0.0.0.0" # # PidFile # Description: Auth server PID file. # Example: "./authserver.pid" - (Enabled) # Default: "" - (Disabled) PidFile = "" # # UseProcessors # Description: Processors mask for Windows based multi-processor systems. # Default: 0 - (Selected by OS) # 1+ - (Bit mask value of selected processors) UseProcessors = 0 # # ProcessPriority # Description: Process priority setting for Windows based systems. # Default: 1 - (High) # 0 - (Normal) ProcessPriority = 1 # # RealmsStateUpdateDelay # Description: Time (in seconds) between realm list updates. # Default: 20 - (Enabled) # 0 - (Disabled) RealmsStateUpdateDelay = 20 # # WrongPass.MaxCount # Description: Number of login attemps with wrong password before the account or IP will be # banned. # Default: 0 - (Disabled) # 1+ - (Enabled) WrongPass.MaxCount = 0 # # WrongPass.BanTime # Description: Time (in seconds) for banning account or IP for invalid login attempts. # Default: 600 - (10 minutes) # 0 - (Permanent ban) WrongPass.BanTime = 600 # # WrongPass.BanType # Description: Ban type for invalid login attempts. # Default: 0 - (Ban IP) # 1 - (Ban Account) WrongPass.BanType = 0 # ################################################################################################### ################################################################################################### # MYSQL SETTINGS # # LoginDatabaseInfo # Description: Database connection settings for the realm server. # Example: "hostname;port;username;password;database" # ".;somenumber;username;password;database" - (Use named pipes on Windows # "enable-named-pipe" to [mysqld] # section my.ini) # ".;/path/to/unix_socket;username;password;database" - (use Unix sockets on # Unix/Linux) # Default: "127.0.0.1;3306;trinity;trinity;auth" LoginDatabaseInfo = "127.0.0.1;3316;root;trinity;realmd" # # LoginDatabase.WorkerThreads # Description: The amount of worker threads spawned to handle asynchronous (delayed) MySQL # statements. Each worker thread is mirrored with its own connection to the # Default: 1 LoginDatabase.WorkerThreads = 1 # ################################################################################################### ################################################################################################### # # LOGGING SYSTEM SETTINGS # # Appender config values: Given a appender "name" # Appender.name # Description: Defines 'where to log' # Format: Type,LogLevel,Flags,optional1,optional2,optional3 # # Type # 0 - (None) # 1 - (Console) # 2 - (File) # 3 - (DB) # # LogLevel # 0 - (Disabled) # 1 - (Trace) # 2 - (Debug) # 3 - (Info) # 4 - (Warn) # 5 - (Error) # 6 - (Fatal) # # Flags: # 0 - None # 1 - Prefix Timestamp to the text # 2 - Prefix Log Level to the text # 4 - Prefix Log Filter type to the text # 8 - Append timestamp to the log file name. Format: YYYY-MM-DD_HH-MM-SS (Only used with Type = 2) # 16 - Make a backup of existing file before overwrite (Only used with Mode = w) # # Colors (read as optional1 if Type = Console) # Format: "fatal error warn info debug trace" # 0 - BLACK # 1 - RED # 2 - GREEN # 3 - BROWN # 4 - BLUE # 5 - MAGENTA # 6 - CYAN # 7 - GREY # 8 - YELLOW # 9 - LRED # 10 - LGREEN # 11 - LBLUE # 12 - LMAGENTA # 13 - LCYAN # 14 - WHITE # Example: "13 11 9 5 3 1" # # File: Name of the file (read as optional1 if Type = File) # Allows to use one "%s" to create dynamic files # # Mode: Mode to open the file (read as optional2 if Type = File) # a - (Append) # w - (Overwrite) # # MaxFileSize: Maximum file size of the log file before creating a new log file # (read as optional3 if Type = File) # Size is measured in bytes expressed in a 64-bit unsigned integer. # Maximum value is 4294967295 (4 gb). Leave blank for no limit. # NOTE: Does not work with dynamic filenames. # Example: 536870912 (512 mb) # Appender.Console=1,2,0 Appender.Auth=2,2,0,Auth.log,w # LogLevel # 0 - (Disabled) # 1 - (Trace) # 2 - (Debug) # 3 - (Info) # 4 - (Warn) # 5 - (Error) # 6 - (Fatal) # # AppenderList: List of appenders linked to logger # (Using spaces as separator). # # Appenders # Description: List of Appenders to read from config # (Using spaces as separator). # Default: "Console Server" Appenders=Console Auth # Logger config values: Given a logger "name" # Logger.name # Description: Defines 'What to log' # Format: Type,LogLevel,AppenderList # Type # 0 - Default. Each type that has no config will # rely on this one. Core will create this logger # (disabled) if it's not configured # 7 - Network input/output, # 30 - Authserver Logger.Root=0,3,Console Auth # # Loggers # Description: List of Loggers to read from config # (Using spaces as separator). # Default: "root" Loggers=Root # ###################################################################################################
kirohi-dev
No description available
Shashank-Handa
10 mini projects with linux to learn linux and Operating systems in general better
Things to do after installing RedHat Enterprise Linux 10
python3 Kali Linux AutoInstaller
georgeflanagin
List of things to do in addition to the base install of Linux 10.x on workstations
Gheda133
A collection of quality-of-life scripts that fix things, help you with stuff and provide useful utilities on Linux and Windows. Para que arreglarlo en 10 minutos si lo puedes automatizar en 10 horas 🤝
hardikmodh123
6 Answers active oldest votes up vote 34 down vote accepted You need to upgrade your PC though but there are few things you can do to make it faster 1. Increase the memory size of Android Studio: Open the file located at /bin/studio.vmoptions and Change the content from -Xms128m -Xmx800m to -Xms256m -Xmx1024m Xms specifies the initial memory allocation pool. Your JVM will be started with Xms amount of memory and will be able to use a maximum of Xmx amount of memory. Save the studio.vmoptions file and restart Android Studio. 2. Improve Gradle performance: Create a file named gradle.properties in /home/<username>/.gradle/ (Linux) /Users/<username>/.gradle/ (Mac) C:\Users\<username>\.gradle (Windows) and add the line: org.gradle.daemon=true This helps a lot, with org.gradle.daemon set to true Gradle reuses computations from previous builds and cache information about project structure, files, tasks etc. in memory so it won’t have to start up the entire Gradle application every time. Source shareimprove this answer edited Oct 10 '16 at 17:42 answered Apr 26 '16 at 10:45 Max 6,20732949 1 All these steps reduced the build time to 37 seconds. That's great performance improvement. Thanks. – Chandra Eskay Apr 26 '16 at 11:08 Your welcome :) – Max Apr 26 '16 at 11:40 Is it the Gradle Daemon that is making most of the difference? – Hackmodford Oct 7 '16 at 13:49 yeah it reuses computations from previous builds and cache information about project structure, files, tasks etc. in memory so it won’t have to start up the entire Gradle application every time. – Max Oct 7 '16 at 14:58
---- Minecraft Crash Report ---- WARNING: coremods are present: SpartanWeaponry-MixinLoader (SpartanWeaponry-1.12.2-1.4.0.jar) MovingWorldCore (movingworld-1.12-6.353-full.jar) OpenModsCorePlugin (OpenModsLib-1.12.2-0.12.2.jar) llibrary (llibrary-1.7.9-1.12.2.jar) CorePlugin (ForgeEndertech-1.12.2-4.5.4.0-build.0534.jar) ColytraLoadingPlugin (colytra-1.12.2-1.2.0.4.jar) ForgelinPlugin (Forgelin-1.8.3.jar) Inventory Tweaks Coremod (InventoryTweaks-1.63.jar) FutureMC (future-mc-1.12.2-0.2.7.4.jar) CreativePatchingLoader (CreativeCore_v1.10.69_mc1.12.2.jar) offlineskins (OfflineSkins-1.12.2-v6-core.jar) MalisisCorePlugin (malisiscore-1.12.2-6.5.1.jar) SecurityCraftLoadingPlugin ([1.12.2]+SecurityCraft+v1.9.0.2.jar) Contact their authors BEFORE contacting forge // Why is it breaking :( Time: 12/28/21 1:05 PM Description: Exception ticking world java.util.ConcurrentModificationException at java.util.HashMap$HashIterator.nextNode(HashMap.java:1445) at java.util.HashMap$KeyIterator.next(HashMap.java:1469) at net.minecraft.entity.EntityTracker.func_85172_a(EntityTracker.java:386) at net.minecraft.server.management.PlayerChunkMapEntry.func_187272_b(PlayerChunkMapEntry.java:162) at net.minecraft.server.management.PlayerChunkMap.func_72693_b(SourceFile:165) at net.minecraft.world.WorldServer.func_72835_b(WorldServer.java:227) at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:756) at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:397) at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:668) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:526) at java.lang.Thread.run(Thread.java:748) A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Thread: Server thread Stacktrace: at java.util.HashMap$HashIterator.nextNode(HashMap.java:1445) at java.util.HashMap$KeyIterator.next(HashMap.java:1469) at net.minecraft.entity.EntityTracker.func_85172_a(EntityTracker.java:386) at net.minecraft.server.management.PlayerChunkMapEntry.func_187272_b(PlayerChunkMapEntry.java:162) at net.minecraft.server.management.PlayerChunkMap.func_72693_b(SourceFile:165) at net.minecraft.world.WorldServer.func_72835_b(WorldServer.java:227) -- Affected level -- Details: Level name: world All players: 3 total; [EntityPlayerMP['PandaLoh'/113303, l='world', x=117.22, y=155.00, z=-987.47], EntityPlayerMP['elCohete'/127649, l='world', x=-298.40, y=77.20, z=-557.63], EntityPlayerMP['SuperYellow'/113573, l='world', x=-480.50, y=69.90, z=-581.50]] Chunk stats: ServerChunkCache: 993 Drop: 0 Level seed: 6052007767234812656 Level generator: ID 00 - default, ver 1. Features enabled: true Level generator options: Level spawn location: World: (-302,80,-553), Chunk: (at 2,5,7 in -19,-35; contains blocks -304,0,-560 to -289,255,-545), Region: (-1,-2; contains chunks -32,-64 to -1,-33, blocks -512,0,-1024 to -1,255,-513) Level time: 568271 game time, 586161 day time Level dimension: 0 Level storage version: 0x04ABD - Anvil Level weather: Rain time: 88361 (now: false), thunder time: 15501 (now: false) Level game mode: Game mode: survival (ID 0). Hardcore: false. Cheats: false Stacktrace: at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:756) at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:397) at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:668) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:526) at java.lang.Thread.run(Thread.java:748) -- System Details -- Details: Minecraft Version: 1.12.2 Operating System: Linux (amd64) version 4.15.0-96-generic Java Version: 1.8.0_252, Private Build Java VM Version: OpenJDK 64-Bit Server VM (mixed mode), Private Build Memory: 7023598984 bytes (6698 MB) / 10535043072 bytes (10047 MB) up to 10535043072 bytes (10047 MB) JVM Flags: 2 total; -Xmx10240M -Xms10240M IntCache: cache: 0, tcache: 0, allocated: 13, tallocated: 95 FML: MCP 9.42 Powered by Forge 14.23.5.2859 96 mods loaded, 96 mods active States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored | State | ID | Version | Source | Signature | |:------ |:-------------------------------------------- |:------------------------ |:------------------------------------------------ |:---------------------------------------- | | LCHIJA | minecraft | 1.12.2 | minecraft.jar | None | | LCHIJA | mcp | 9.42 | minecraft.jar | None | | LCHIJA | FML | 8.0.99.99 | custom.jar | e3c3d50c7c986df74c645c0ac54639741c90a557 | | LCHIJA | forge | 14.23.5.2859 | custom.jar | e3c3d50c7c986df74c645c0ac54639741c90a557 | | LCHIJA | creativecoredummy | 1.0.0 | minecraft.jar | None | | LCHIJA | com.elytradev.movingworld.common.asm.coremod | | minecraft.jar | None | | LCHIJA | openmodscore | 0.12.2 | minecraft.jar | None | | LCHIJA | securitycraft | v1.9.0.2 | [1.12.2]+SecurityCraft+v1.9.0.2.jar | None | | LCHIJA | forgeendertech | 1.12.2-4.5.4.0 | ForgeEndertech-1.12.2-4.5.4.0-build.0534.jar | None | | LCHIJA | adpoles | 1.12.2-2.0.3.0 | AdPoles-1.12.2-2.0.3.0-build.0552.jar | None | | LCHIJA | aether_legacy | 1.5.3.2 | aether-1.12.2-v1.5.3.2.jar | None | | LCHIJA | jei | 4.16.1.301 | jei_1.12.2-4.16.1.301.jar | None | | LCHIJA | appleskin | 1.0.9 | AppleSkin-mc1.12-1.0.9.jar | None | | LCHIJA | architecturecraft | @VERSION@ | architecturecraft-1.12-3.98.jar | None | | LCHIJA | baubles | 1.5.2 | Baubles-1.12-1.5.2.jar | None | | LCHIJA | artifacts | 1.12.2-1.1.0 | Artifacts-1.12.2-1.1.0.jar | None | | LCHIJA | astikorcarts | 1.12.2-0.1.2.8 | astikorcarts-1.12.2-0.1.2.8.jar | None | | LCHIJA | bettercaves | 1.12.2 | bettercaves-1.12.2-2.0.4.jar | None | | LCHIJA | better_diving | 1.5.8 | BetterDiving-1.12.2-1.5.8.jar | None | | LCHIJA | bettermineshafts | 1.12.2-2.2 | BetterMineshaftsForge-1.12.2-2.2.jar | None | | LCHIJA | bookshelf | 2.3.577 | Bookshelf-1.12.2-2.3.577.jar | d476d1b22b218a10d845928d1665d45fce301b27 | | LCHIJA | bookworm | 1.12.2-2.5.2.1 | bookworm-1.12.2-2.5.2.1.jar | None | | LCHIJA | carryon | 1.12.3 | carryon-1.12.2-1.12.3.15.jar | fd21553434f4905f2f73ea7838147ac4ea07bd88 | | LCHIJA | chameleon | 1.12-4.1.3 | Chameleon-1.12-4.1.3.jar | None | | LCHIJA | chiselsandbits | 14.33 | chiselsandbits-14.33.jar | None | | LCHIJA | chococraft | 0.9.9.0 | chococraft_1.12.2-0.9.9.0.jar | None | | LCHIJA | codechickenlib | 3.2.3.358 | CodeChickenLib-1.12.2-3.2.3.358-universal.jar | f1850c39b2516232a2108a7bd84d1cb5df93b261 | | LCHIJA | colytra | 1.2.0.4 | colytra-1.12.2-1.2.0.4.jar | 2484ef4d131fdc0dca0647aa21b7b944ddb935a1 | | LCHIJA | morpheus | 1.12.2-3.5.106 | Morpheus-1.12.2-3.5.106.jar | None | | LCHIJA | comforts | 1.4.1.3 | comforts-1.12.2-1.4.1.3.jar | 2484ef4d131fdc0dca0647aa21b7b944ddb935a1 | | LCHIJA | coralreef | 2.0 | CoralReef-2.5-1.12.2.jar | None | | LCHIJA | creativecore | 1.10.0 | CreativeCore_v1.10.69_mc1.12.2.jar | None | | LCHIJA | movingworld | 1.12-6.353 | movingworld-1.12-6.353-full.jar | None | | LCHIJA | davincisvessels | @DVESSELSVER@ | davincisvessels-1.12-6.340-full.jar | None | | LCHIJA | props | 2.6.3.7 | Decocraft-2.6.3.7_1.12.2.jar | None | | LCHIJA | eplus | 5.0.176 | EnchantingPlus-1.12.2-5.0.176.jar | d476d1b22b218a10d845928d1665d45fce301b27 | | LCHIJA | exoticbirds | 1.0 | Exotic+Birds+1.12.2-3.2.0.jar | None | | LCHIJA | extrautils2 | 1.0 | extrautils2-1.12-1.9.9.jar | None | | LCHIJA | fasterladderclimbing | 0.1-146 | FasterLadderClimbing-1.12-0.1-146.jar | None | | LCHIJA | fastleafdecay | v14 | FastLeafDecay-v14.jar | None | | LCHIJA | fencejumper | 1.0.5 | fencejumper-1.12-1.0.5.jar | None | | LCHIJA | forgelin | 1.8.3 | Forgelin-1.8.3.jar | None | | LCHIJA | futuremc | 0.2.6 | future-mc-1.12.2-0.2.7.4.jar | None | | LCHIJA | gokistats | 1.2.8.4 | gokiStats-1.2.8.4.jar | None | | LCHIJA | grapplemod | 1.12.2-v11.1 | grapplemod-v11.1-1.12.2.jar | None | | LCHIJA | waila | 1.8.26 | Hwyla-1.8.26-B41_1.12.2.jar | None | | LCHIJA | ichunutil | 7.2.0 | iChunUtil-1.12.2-7.2.0.jar | 4db5c2bd1b556f252a5b8b54b256d381b2a0a6b8 | | LCHIJA | ido | 1.0.6 | ido-1.12.2-1.1.0.jar | None | | LCHIJA | mcjtylib_ng | 3.5.0 | mcjtylib-1.12-3.5.0.jar | None | | LCHIJA | immcraft | 1.6.0 | immcraft-1.12-1.6.0.jar | None | | LCHIJA | inventorytweaks | 1.63+release.109.220f184 | InventoryTweaks-1.63.jar | 55d2cd4f5f0961410bf7b91ef6c6bf00a766dcbe | | LCHIJA | journeymap | 1.12.2-5.7.1 | journeymap-1.12.2-5.7.1.jar | None | | LCHIJA | jarm | 1.1.1 | Just+A+Raft+Mod-1.1.1.jar | None | | LCHIJA | libraryex | 1.2.2 | LibraryEx-1.12.2-1.2.2.jar | None | | LCHIJA | llibrary | 1.7.9 | llibrary-1.7.9-1.12.2.jar | None | | LCHIJA | malisiscore | 1.12.2-6.5.1-SNAPSHOT | malisiscore-1.12.2-6.5.1.jar | None | | LCHIJA | malisisdoors | 1.12.2-7.3.0 | malisisdoors-1.12.2-7.3.0.jar | None | | LCHIJA | megaloot | 0.2.40 | megaloot-1.12.2-0.2.40.jar | None | | LCHIJA | modularvc | 1.1.1 | ModularVoiceChat-1.1.1.jar | None | | LCHIJA | mowziesmobs | 1.5.8 | mowziesmobs-1.5.8.jar | None | | LCHIJA | netherex | 2.2.5 | NetherEx-1.12.2-2.2.5.jar | None | | LCHIJA | recipehandler | 0.13 | NoMoreRecipeConflict-0.13(1.12.2).jar | None | | LCHIJA | offlineskins | 1.12.2-v6 | OfflineSkins-1.12.2-v6.jar | aaaf83332a11df02406e9f266b1b65c1306f0f76 | | LCHIJA | opframe | 1.4.0 | OnlinePicFrame_v1.5.0-pre1_mc1.12.2.jar | None | | LCHIJA | openmods | 0.12.2 | OpenModsLib-1.12.2-0.12.2.jar | d2a9a8e8440196e26a268d1f3ddc01b2e9c572a5 | | LCHIJA | openblocks | 1.8.1 | OpenBlocks-1.12.2-1.8.1.jar | d2a9a8e8440196e26a268d1f3ddc01b2e9c572a5 | | LCHIJA | openglider | @VERSION@ | OpenGlider-1.12.1-1.1.0.jar | None | | LCHIJA | playerrevive | 1.0 | PlayerRevive_v1.2.40_mc1.12.2.jar | None | | LCHIJA | progressivebosses | 1.5.4 | ProgressiveBosses-1.5.4-mc1.12.x.jar | None | | LCHIJA | reap | 1.5.3 | reap-1.5.3.jar | None | | LCHIJA | additionalstructures | 2.4.1 | Rex's-Additional-Structures-1.12.x-(v.2.4.1).jar | None | | LCHIJA | roguelike | 1.8.0 | RoguelikeDungeons-1.12.2-1.8.0.jar | None | | LCHIJA | roughtweaks | 1.0 | roughTweaks0.2.4-1.12.2.jar | None | | LCHIJA | rustic | 1.1.7 | rustic-1.1.7.jar | None | | LCHIJA | signpost | 1.08.5 | signpost-1.12.2-1.08.5.jar | None | | LCHIJA | silentlib | 3.0.13 | SilentLib-1.12.2-3.0.14+168.jar | None | | LCHIJA | ultra_util_mod | 1.0.0 | SpaRock'sUltraUtilMod-1.12.2-1.0.1.jar | None | | LCHIJA | spartanshields | 1.5.4 | SpartanShields-1.12.2-1.5.4.jar | None | | LCHIJA | spartanweaponry | 1.4.0 | SpartanWeaponry-1.12.2-1.4.0.jar | None | | LCHIJA | storagedrawers | 5.2.2 | StorageDrawers-1.12.2-5.4.2.jar | None | | LCHIJA | stupidthings | 1.1.6 | Stupid+Things-1.12.2-1.1.6.jar | None | | LCHIJA | theaurorian | 1.12.2-Release | theaurorian-1.12.2-release-may3021.jar | None | | LCHIJA | tombstone | 3.6.8 | tombstone-3.6.8-1.12.2.jar | None | | LCHIJA | torchbandolier | 0.1.1 | TorchBandolier-1.12.2-0.1.1-4.jar | None | | LCHIJA | torchmaster | 1.8.5.0 | torchmaster_1.12.2-1.8.5.0.jar | None | | LCHIJA | trapcraft | 2.4.5 | Trapcraft-1.12.2-2.4.5.jar | None | | LCHIJA | trashslot | 8.4.10 | TrashSlot_1.12.2-8.4.10.jar | None | | LCHIJA | twilightforest | 3.11.1021 | twilightforest-1.12.2-3.11.1021-universal.jar | None | | LCHIJA | uteamcore | 2.2.4.133 | u_team_core-1.12.2-2.2.4.133.jar | None | | LCHIJA | usefulbackpacks | 1.5.1.42 | useful_backpacks-1.12.2-1.5.1.42.jar | None | | LCHIJA | variedcommodities | 1.12.2 | VariedCommodities_1.12.2-(06Dec21).jar | None | | LCHIJA | walljump | 1.3.2 | walljump-1.12.2-1.3.2.jar | None | | LCHIJA | worldedit | 6.1.10 | worldedit-forge-mc1.12.2-6.1.10-dist.jar | None | | LCHIJA | zawa | 1.12.2-2.1.3 | zawa-1.12.2-2.1.3.jar | 3ee471ded1bba54aa82f4f5ca5ca82dd67b8ef42 | | LCHIJA | betteranimalsplus | 9.0.1 | betteranimalsplus-1.12.2-9.0.1.jar | None | | LCHIJA | kiwi | 0.5.3.32 | Kiwi-1.12.2-0.5.3.32.jar | None | Loaded coremods (and transformers): SpartanWeaponry-MixinLoader (SpartanWeaponry-1.12.2-1.4.0.jar) MovingWorldCore (movingworld-1.12-6.353-full.jar) OpenModsCorePlugin (OpenModsLib-1.12.2-0.12.2.jar) openmods.core.OpenModsClassTransformer llibrary (llibrary-1.7.9-1.12.2.jar) net.ilexiconn.llibrary.server.core.plugin.LLibraryTransformer net.ilexiconn.llibrary.server.core.patcher.LLibraryRuntimePatcher CorePlugin (ForgeEndertech-1.12.2-4.5.4.0-build.0534.jar) ColytraLoadingPlugin (colytra-1.12.2-1.2.0.4.jar) c4.colytra.asm.ElytraTransformer ForgelinPlugin (Forgelin-1.8.3.jar) Inventory Tweaks Coremod (InventoryTweaks-1.63.jar) invtweaks.forge.asm.ContainerTransformer FutureMC (future-mc-1.12.2-0.2.7.4.jar) thedarkcolour.futuremc.asm.CoreTransformer CreativePatchingLoader (CreativeCore_v1.10.69_mc1.12.2.jar) offlineskins (OfflineSkins-1.12.2-v6-core.jar) lain.mods.skins.init.forge.asm.ASMTransformer MalisisCorePlugin (malisiscore-1.12.2-6.5.1.jar) SecurityCraftLoadingPlugin ([1.12.2]+SecurityCraft+v1.9.0.2.jar) OpenModsLib class transformers: [llama_null_fix:FINISHED],[horse_base_null_fix:FINISHED],[pre_world_render_hook:ENABLED],[player_render_hook:ENABLED],[horse_null_fix:FINISHED] Profiler Position: N/A (disabled) Player Count: 3 / 11; [EntityPlayerMP['PandaLoh'/113303, l='world', x=117.22, y=155.00, z=-987.47], EntityPlayerMP['elCohete'/127649, l='world', x=-298.40, y=77.20, z=-557.63], EntityPlayerMP['SuperYellow'/113573, l='world', x=-480.50, y=69.90, z=-581.50]] Is Modded: Definitely; Server brand changed to 'fml,forge' Type: Dedicated Server (map_server.txt)
AdekoyaOlatolokikiAyomide
How to share data with a statistician This is a guide for anyone who needs to share data with a statistician or data scientist. The target audiences I have in mind are: Collaborators who need statisticians or data scientists to analyze data for them Students or postdocs in various disciplines looking for consulting advice Junior statistics students whose job it is to collate/clean/wrangle data sets The goals of this guide are to provide some instruction on the best way to share data to avoid the most common pitfalls and sources of delay in the transition from data collection to data analysis. The Leek group works with a large number of collaborators and the number one source of variation in the speed to results is the status of the data when they arrive at the Leek group. Based on my conversations with other statisticians this is true nearly universally. My strong feeling is that statisticians should be able to handle the data in whatever state they arrive. It is important to see the raw data, understand the steps in the processing pipeline, and be able to incorporate hidden sources of variability in one's data analysis. On the other hand, for many data types, the processing steps are well documented and standardized. So the work of converting the data from raw form to directly analyzable form can be performed before calling on a statistician. This can dramatically speed the turnaround time, since the statistician doesn't have to work through all the pre-processing steps first. What you should deliver to the statistician To facilitate the most efficient and timely analysis this is the information you should pass to a statistician: The raw data. A tidy data set A code book describing each variable and its values in the tidy data set. An explicit and exact recipe you used to go from 1 -> 2,3 Let's look at each part of the data package you will transfer. The raw data It is critical that you include the rawest form of the data that you have access to. This ensures that data provenance can be maintained throughout the workflow. Here are some examples of the raw form of data: The strange binary file your measurement machine spits out The unformatted Excel file with 10 worksheets the company you contracted with sent you The complicated JSON data you got from scraping the Twitter API The hand-entered numbers you collected looking through a microscope You know the raw data are in the right format if you: Ran no software on the data Did not modify any of the data values You did not remove any data from the data set You did not summarize the data in any way If you made any modifications of the raw data it is not the raw form of the data. Reporting modified data as raw data is a very common way to slow down the analysis process, since the analyst will often have to do a forensic study of your data to figure out why the raw data looks weird. (Also imagine what would happen if new data arrived?) The tidy data set The general principles of tidy data are laid out by Hadley Wickham in this paper and this video. While both the paper and the video describe tidy data using R, the principles are more generally applicable: Each variable you measure should be in one column Each different observation of that variable should be in a different row There should be one table for each "kind" of variable If you have multiple tables, they should include a column in the table that allows them to be joined or merged While these are the hard and fast rules, there are a number of other things that will make your data set much easier to handle. First is to include a row at the top of each data table/spreadsheet that contains full row names. So if you measured age at diagnosis for patients, you would head that column with the name AgeAtDiagnosis instead of something like ADx or another abbreviation that may be hard for another person to understand. Here is an example of how this would work from genomics. Suppose that for 20 people you have collected gene expression measurements with RNA-sequencing. You have also collected demographic and clinical information about the patients including their age, treatment, and diagnosis. You would have one table/spreadsheet that contains the clinical/demographic information. It would have four columns (patient id, age, treatment, diagnosis) and 21 rows (a row with variable names, then one row for every patient). You would also have one spreadsheet for the summarized genomic data. Usually this type of data is summarized at the level of the number of counts per exon. Suppose you have 100,000 exons, then you would have a table/spreadsheet that had 21 rows (a row for gene names, and one row for each patient) and 100,001 columns (one row for patient ids and one row for each data type). If you are sharing your data with the collaborator in Excel, the tidy data should be in one Excel file per table. They should not have multiple worksheets, no macros should be applied to the data, and no columns/cells should be highlighted. Alternatively share the data in a CSV or TAB-delimited text file. (Beware however that reading CSV files into Excel can sometimes lead to non-reproducible handling of date and time variables.) The code book For almost any data set, the measurements you calculate will need to be described in more detail than you can or should sneak into the spreadsheet. The code book contains this information. At minimum it should contain: Information about the variables (including units!) in the data set not contained in the tidy data Information about the summary choices you made Information about the experimental study design you used In our genomics example, the analyst would want to know what the unit of measurement for each clinical/demographic variable is (age in years, treatment by name/dose, level of diagnosis and how heterogeneous). They would also want to know how you picked the exons you used for summarizing the genomic data (UCSC/Ensembl, etc.). They would also want to know any other information about how you did the data collection/study design. For example, are these the first 20 patients that walked into the clinic? Are they 20 highly selected patients by some characteristic like age? Are they randomized to treatments? A common format for this document is a Word file. There should be a section called "Study design" that has a thorough description of how you collected the data. There is a section called "Code book" that describes each variable and its units. How to code variables When you put variables into a spreadsheet there are several main categories you will run into depending on their data type: Continuous Ordinal Categorical Missing Censored Continuous variables are anything measured on a quantitative scale that could be any fractional number. An example would be something like weight measured in kg. Ordinal data are data that have a fixed, small (< 100) number of levels but are ordered. This could be for example survey responses where the choices are: poor, fair, good. Categorical data are data where there are multiple categories, but they aren't ordered. One example would be sex: male or female. This coding is attractive because it is self-documenting. Missing data are data that are unobserved and you don't know the mechanism. You should code missing values as NA. Censored data are data where you know the missingness mechanism on some level. Common examples are a measurement being below a detection limit or a patient being lost to follow-up. They should also be coded as NA when you don't have the data. But you should also add a new column to your tidy data called, "VariableNameCensored" which should have values of TRUE if censored and FALSE if not. In the code book you should explain why those values are missing. It is absolutely critical to report to the analyst if there is a reason you know about that some of the data are missing. You should also not impute/make up/ throw away missing observations. In general, try to avoid coding categorical or ordinal variables as numbers. When you enter the value for sex in the tidy data, it should be "male" or "female". The ordinal values in the data set should be "poor", "fair", and "good" not 1, 2 ,3. This will avoid potential mixups about which direction effects go and will help identify coding errors. Always encode every piece of information about your observations using text. For example, if you are storing data in Excel and use a form of colored text or cell background formatting to indicate information about an observation ("red variable entries were observed in experiment 1.") then this information will not be exported (and will be lost!) when the data is exported as raw text. Every piece of data should be encoded as actual text that can be exported. The instruction list/script You may have heard this before, but reproducibility is a big deal in computational science. That means, when you submit your paper, the reviewers and the rest of the world should be able to exactly replicate the analyses from raw data all the way to final results. If you are trying to be efficient, you will likely perform some summarization/data analysis steps before the data can be considered tidy. The ideal thing for you to do when performing summarization is to create a computer script (in R, Python, or something else) that takes the raw data as input and produces the tidy data you are sharing as output. You can try running your script a couple of times and see if the code produces the same output. In many cases, the person who collected the data has incentive to make it tidy for a statistician to speed the process of collaboration. They may not know how to code in a scripting language. In that case, what you should provide the statistician is something called pseudocode. It should look something like: Step 1 - take the raw file, run version 3.1.2 of summarize software with parameters a=1, b=2, c=3 Step 2 - run the software separately for each sample Step 3 - take column three of outputfile.out for each sample and that is the corresponding row in the output data set You should also include information about which system (Mac/Windows/Linux) you used the software on and whether you tried it more than once to confirm it gave the same results. Ideally, you will run this by a fellow student/labmate to confirm that they can obtain the same output file you did. What you should expect from the analyst When you turn over a properly tidied data set it dramatically decreases the workload on the statistician. So hopefully they will get back to you much sooner. But most careful statisticians will check your recipe, ask questions about steps you performed, and try to confirm that they can obtain the same tidy data that you did with, at minimum, spot checks. You should then expect from the statistician: An analysis script that performs each of the analyses (not just instructions) The exact computer code they used to run the analysis All output files/figures they generated. This is the information you will use in the supplement to establish reproducibility and precision of your results. Each of the steps in the analysis should be clearly explained and you should ask questions when you don't understand what the analyst did. It is the responsibility of both the statistician and the scientist to understand the statistical analysis. You may not be able to perform the exact analyses without the statistician's code, but you should be able to explain why the statistician performed each step to a labmate/your principal investigator. Contributors Jeff Leek - Wrote the initial version. L. Collado-Torres - Fixed typos, added links. Nick Reich - Added tips on storing data as text. Nick Horton - Minor wording suggestions.
All 20 repositories loaded