சி மொழியின் ஒருங்கிணைந்த அடுத்தபடிமுறைமாற்றத்தின் வெளியீடுஎன்னவாக இருக்கும்?

கணினியில் சி மொழி என்பது கடல் அன்று அது ஒரு பெருங்கடலாகும் எந்தஅளவிற்கு அனுபவம் அறிவு பெற்றுள்ளோமோ அந்தஅளவிற்கு நம்முடைய நடைமுறை பயன்பாட்டிற்கு தேவையானவாறு பயன்படுத்தி பயன்பெறமுடியும்
இதில் எந்தவொரு கணிதசெயல்பாடுகளில் இரும எண் வாரியாக முதல் படிமுறையானChar ,Short தரவுகைகளானது அடுத்த படிமுறையின் Signed int ,unsigned int தரமுயர்த்தபடுகின்றது உதாரணமாக
#include
int main()
{
signed char x = 0xFF;
unsigned char y = 0xFF;
//Compare both the values of x and y
if ( x ==y)
{
printf(“equal\n”);
}
else
{
printf(“unequal\n”);
}
return 0 ;
}
என்ற நிரல்தொடரின் வெளியீடு என்னவாக இருக்கும் என வினவினால் பெரும்பாலானவர்கள் x ,y ஆகிய இரண்டும் சமமானது(equal) என வெளியீடு இருக்கும் என உடனடியாக பதிலிடுவார்கள் ஆனால் உண்மையில் சமமற்றது (unequal)என வெளியீடு இருக்கும் என்பதே சரியான பதிலாகும்
இதில் ifஎனும் கூற்றால் சரிபார்த்திடும்போது முதலில் signed char ஆன x ஆனது 0xFFFFFFFF ஆக உருமாற்றபடுகின்றது அவ்வாறே unsigned charஆன yஆனது 0x000000FF ஆக உருமாற்றபடுகின்றது அதாவதுமுதல் படிமுறையில் இருந்தவை அடுத்தபடிமுறைக்கு மாற்றபட்டுவிட்டதால்அதன்பின்னர் இரண்டையும் ஒப்பீடு செய்திடும்போது நமக்கு சமமற்றது என விடைகிடைக்கின்றது

வருங்காலத்தில் எங்கும் எதிலும் பயன்படப்போவது குவாண்டம் கணினிமட்டுமே

வருங்காலத்தில் குவாண்டம் கணினிதான் நம்மை ஆளப்போகின்றது ஏனெனில் இது தற்போதுநம்முன் எழும் மிகவும் சிக்கலான கேள்விகளுக்கான தீர்வை மிக எளிதாக விடையை காண நமக்கு உதவவருகின்றது இந்த குவாண்டம் கணினி வழக்கமான அனைத்து வியாபார பிரச்சினைகளையும் எளிதாக தீர்வுசெய்து இன்னும் பத்தாண்டுகளில் எங்கெங்கும் இநத குவாண்டம் கணினிதான் ஆட்சிசெய்யவிருக்கின்றது என்ற செய்தியை மனதில் கொள்க தற்போதைய இருமநிலை கணினியில் மில்லியன் கணக்கான ட்ரான்ஸிஸ்டர்களும் கெபாஸிட்டர்களும் கொண்டு உருவாக்கியதாகும் இவை ஒவ்வொன்றும் 0 (off / false) அல்லது1 (on / true)ஆகிய இருநிலைகளில் ஏதேனும் ஒருநிலையில் மட்டுமே இருக்கும் ஒருநொடியில் பில்லியன் நேரத்திற்குள் 0 அல்லது 1 ஆகிய இரண்டில் ஒருநிலைக்கு மாற்றமுடியும் இதற்குமேல் வேகமாக செயல்படவேண்டுமெனில் குவாண்டம் தேற்றம் கைகொடுக்கின்றது இந்த குவாண்டம் கணினியில் இருநிலைகளும் ஒரேசமயத்தில் இருக்கின்றது இதில் எலெக்ட்ரான்கள்அல்லது போட்டான்கள் பயன்படுத்தபடுகின்றன இதில் 0 உம் 1 உம் சேர்ந்து ,0அல்லது 1 ஆகிய நிலையில் இருக்கின்றன இதனை குவாண்டம்பிட் அல்லது கியூபிட் என அழைக்கபடுகின்றது இந்த குவாண்டம் கணினிக்கு எடுத்துகாட்டாக தொலைபேசிவைத்திருப்பவர்களின் பட்டியலில் இருக்கும் நபர்களில் ஒருவரின் தொலைபேசி எண்ணை கண்டுபிடிப்பதற்கு தற்போதைய கணினியானது அந்த பட்டியலின் அனைத்து பெயர்களையும் ஒவ்வொன்றாக வரிசையாக முதலிலிருந்து கடைசிவரை தேடி பிடிக்கின்றது இந்த வழிமுறையானது கூடுதல் நேரமும் குறிப்பிட்ட எண் இந்த வரிசையில் இல்லை யென கண்டுபிடிக்கவே அதிகநேரமும் எடுத்துகொள்கின்றது இவ்வாறே ஆராய்ச்சி கூடங்களில் ஏராளமான தரவுகள் வெளியிடப்பட்டுகொண்டே இருக்கின்றன அவைகளிலிருந்து தெளிவான முடிவை காண தற்போதைய இருமநிலை கணினியில் அதிக சிரமமும் காலமும் எடுத்து கொள்ள வேண்டியுள்ளது ஆயினும் இந்த குவாண்டம் கணினியின் உதவியுடன் இந்தபிரச்சினைக்கான தீர்வை ஒரிரு நொடிக்குள் அடையமுடியும் என்ற செய்தியையும் மனதில் கொள்க.

App Inventor2இன் உதவியால் ஆண்ட்ராய்டு சூழலில் கூகுளின் வரைபடவசதியை கொண்டுவரலாம்

புதிய நகரங்களுக்கு நம்முடைய மகிழ்வுந்தில் சென்று அதனை நிறுத்தம் செய்திடும் இடத்தில் நிறுத்திவிடடு அந்நகரின் வேறுஒரு இடத்தில் உள்ள நம்முடைய அலுவலக பணி அல்லது சொந்த பணியை முடித்தபின்னர் நம்முடைய மகிழ்வுந்து எங்கு நிறுத்தினோம் என தேடிக்கண்டுபிடித்திட இந்தApp Inventor2இன் உதவியால் நம்முடைய சாதனத்தின் ஆண்ட்ராய்டு சூழலில் கூகுளின் வரைபடவசதியை கொண்டுவரலாம் இதற்காக Activity starter, Label, Button, Horizontal arrangement,TinyDB,Location sensor ஆகிய உறுப்புகள் தேவையாகும் இவையனைத்தும் நம்முடைய சாதனத்தின் ஆண்ட்ராய்டு பகுதியில் உள்ளன இவைகளை பிடித்து இழுத்துவந்து ஒரு இடத்தில் விட்டிடுக. இவைகளில் ஒருசில நம்முடைய கண்ணிற்கு புலப்படும் ஒருசில nonvisibleஎன்பதன் கீழ் இருக்கும் பின்னர் Button களை கிடைமட்டமாக Horizontal arrangement என்பதன்கீழ் சரிசெய்து அமைத்து கொள்க அதன்பின்னர் Label, Button ஆகியவற்றிற்கான பண்பியல்புகளை சரிசெய்து அமைத்து கொள்க இதில் Activity starter ஆனது ஏற்கனவே நம்முடைய சாதனத்தில் நிறுவுகை செய்யபட்டு தயார்நிலையில் இருக்கும் இதுமற்ற பயன்பாடுகளை தூண்டிவிட்டு அதனை செயல்பட செய்வதற்கு பயன்படுகின்றது. மேலும் இந்த Activity starter இல் Action எனும் பண்பியல்பின் மதிப்பாக android,intent.action.VIEW என்பதையும் ActivityClass எனும் பண்பியல்பின் மதிப்பாக com.google.android.maps.MapsActivity என்பதையும் ActivityPAckageஎனும் பண்பியல்பின் மதிப்பாக com.google.android.apps.mapsஎன்பதையும் அமைத்துகொள்க இதன்பின்னர் Block Editorஎன்பதில் நம்முடைய பயன்பாடானது தற்போதைய இடஅமைவை பெறவேண்டும் , அதற்காகLocation_Save_Button எனும் தற்போதைய இட அமைவை சேமித்திடவேண்டும் மேலும் Location_Save_Button ஏற்கனவே சேமித்துள்ள இடஅமைவை மேலெழுத செய்யதிவேண்டும் Show_Directions_Buttonஎனும் பொத்தான் நாம் நிறுத்திய இடத்திற்கும் தற்போதைய இடத்திற்குமான பாதையை கூகுள் வரைபடத்தின் துனையுடன் வழிகாட்டிவேண்டும் ஆகிய செயலிற்கான அமைவை கட்டமைவு செய்திடவேண்டும் அதன்பின்னர் beginner இலிருந்து Block Editor மாறிடுக அங்கு முதல் Block ஆனது இடஅமைவை குறிப்பிடுவதாகும் இதில் மாறுதலானால் உடன் மாறிய இடஅமைவை குறிப்பிட பயன்படுகின்றது இந்த இடஅமைவை Label இன் வாயிலாக திரையில் காண்பிக்கின்றது பின்னர் நாம் Save எனும் பொத்தானை அழுத்தி இந்த இடஅமைவையும் முகவரியையும் சேமித்திடபயனபடுகின்றது மீண்டும் இந்த Save எனும் பொத்தானை அழுத்தினால் தற்போதைய இடஅமைவையும் முகவரியையும் நிகழ்நிலை படுத்தி சேமித்திடபயன்படுகின்றது அதற்கடுத்ததாக Show_Direction எனும் பொத்தானை அழுத்தினால் முந்தைய இடத்திற்கும் தற்போதைய இடத்திற்கும் இடையே சென்றுசேருவதற்கான வழியைகூகுள் வரைபடத்தின்துனையுடன் காண்பிக்கின்றது இதன்பின்னர் இந்த பயன்பாட்டினை பதிவிறக்கம் செய்து buildஎனும் பொத்தானை அழுத்தி நம்முடைய சாதனத்தில் நிறுவுகை செய்து பிழைஏதும் இருந்தால் சரிசெய்து பரிசோதித்து பயன்படுத்தி பார்த்திடுக

Vdbenchஎனும் தேக்கும்திறன்மதிப்பு காணஉதவும் கருவிஒரு அறிமுகம்

Vdbenchஎன்பது கணினியின் தேக்கிடும் அமைவிற்கானஒரு கட்டுப்படுத்தப்பட்ட உள்வெளி சுமைகளின் போலியாகசெயல்படுத்திடும் கருவியாகும் இதுஉள்வெளிஅளவு, கோப்புஅளவு பரிமாற்ற அளவுதற்காலிகநினைவக ஆகியவைகளின் பணிச்சுமையின் அளவுகோலாக கட்டுபடுத்திட அனுமதிக்கின்றது மேலும்இணையத்தில் அனுககூடிய HTML வடிவமைப்பில் இதற்கான அறிக்கையை உருவாக்கி நமக்கு வழங்குகின்றது இது ஆரக்கிலிலிருந்தும் ஜாவா, சி ஆகியமொழிகளாலும் உருவாக்கபட்டதொரு ஒரு திறமூல கருவியாகும்.இது விண்டோ லினக்ஸ் போன்ற அனைத்து இயக்கமுறைமைகளிலும் செயல்படும் திறன்மிக்கதாகும் இது ஒரு தேக்கும் அமைவில் பணிச்சுமையை அளவிடுவதற்காக வடிவமைக்கப்பட்டதாகும். இது ஒரு சாதாராண கணித சூத்திரமாக ஒரு தகவமைப்பு கோப்பில் பணிச்சுமையின் தொகுதியை வரையறுப்பதுடன் இதனை விளக்கமளித்து பின்வருமாறு குறிப்பிடலாம். f(workload,config) =Power +Performance இந்த திறமூல கருவியின் துனையுடன் எந்தவொரு தேக்கிடும் தொகுதியின் திறனையும் அளந்திடமுடியும். இது இரண்டு அல்லது அதற்கு மேற்ப்டட ஜாவா மெய்நிகர் இயந்திரத்தின் மீது செயல்படும் அவற்றுள் ஒன்று அறிக்கை தயாரித்தல்,கட்டுப்படுத்தல் போன்ற தலைமை நிருவாகியாகவும் மற்றவை பணியாளராகவும் செயல்படுகின்றன. தேக்கிடும் அமைவில் ஏதேனும் தரவுகள் அழிக்கபட்டிருந்தால் இந்த கருவி நமக்கு சுடடிகாட்டுகின்றது மேலும் இது தேக்கிடும் அமைவின் தரஅளவை வகைபடுத்திட உதவும் ஒரு கட்டற்ற கருவியாக செயல்படுகின்றது
இதனுடைய சுருக்கி கட்டப்பட்ட கோப்புகளை அதற்காகன இணையதள பக்கத்திலிருந்து பதிவிறக்கம் செய்து வெளியிலெடுத்து தொடர்புடைய கட்டளைவரியின் வாயிலாக செயல்படுத்தி நிறுவுகை செய்திடுக இந்த கருவியில் தேக்கிடும் திறனை பரிசோதித்திட தேக்கிடும் வரையறை(Storage Definition), பணியின் அளவை பரிசோதித்திடுவதற்காக பணிசுமைவரையறை(Workload Definition), இயங்கிடு்ம தன்மையை பரிசோதித்திடுவதற்காக இயக்கவரையறை(Run Definition) ஆகிய மூன்று வரையறைகள் உள்ளன அனைத்தையும் கட்டமைவு செய்தபின்னர்
/vdbench/vdbench -f conf1.txt conf2.txt -0 output+
/vdbench/vdbench -i 10 -f simple_test.conf -o simple_test+
ஆகிய இரு கட்டளைவரிகளை செயற்படுத்திடுக உடன் தேக்கிடும் திறனை இந்த கருவி சரிபார்த்து பரிசோதித்துஇறுதியாக Summary,html, Total.html, Flatfile.html, Logfile.html,Kstat.htmlபோன்ற கோப்புகளின் வாயிலான நமக்கு அறிக்கைகளை உருவாக்கிடுகின்றது
மேலும் விவரங்களுக்கும் பயனாளர் வழிகாட்டியை பயன்படுத்திகொள்வதற்கும் http://www.oracle.com/technetwork/server-storage/vdbench-1901683.pdf எனும் இணைய முகவரிக்கு செல்க.
10

ஒருங்கிணைந்த மார்க்அப் மொழியும் ப்பிஹெச்ப்பியும் சேர்த்து இணைய பயன்பாட்டினை உருவாக்கிட உதவிடும் TWIG எனும்மாதிரிபலகபொறி

TWIG என்பது PHP-க்கான ஒரு நவீன, விரைவான,பாதுகாப்பான நெகிழ்வுதன்மையுடன் கூடிய மாதிரிபலக பொறியாகும் தற்போதைய நவீன கணினிமொழிகள் அனைத்தும் பொருள் நோக்கு நிரல்தொடரின் பல்லுருப்பெறல்,மரபுரிமை,பொதிவுரையாக்கம்ஆகிய பண்புகளை அடிப்படையாக கொண்டு மேம்படுத்தப்படுகின்றன ஆனால் மார்க்அப் மொழிகளான HTML,XML, போன்றவற்றில் இந்த பல்லுருப்பெறல் ,மரபுரிமை, பொதிவுரையாக்கம்ஆகிய பண்புகள் இல்லாதவைகளாக உள்ளன இதனை ஈடுகட்டுவதற்காக TWIG போன்ற மாதிரிபலகபொறிகள் நவீண இணைய பயன்பாடுகளை உருவாக்கு-நர்களுக்கு பேருதவியாக உள்ளன. இது மிகவிரைவாக செயல்படக்கூடியது மிகபாதுகாப்பானது நெகிழ்வுதன்மையுடனானது இதனை பயன்படுத்தி கொள்வதற்காக முதலில் composerஐ http://getcomposer.org/downlaod/ எனும் தளத்திலிருந்து பதிவிறக்கும் செய்து கொள்க பின்னர் https://getcomposer.org/doc/00-intro.md#globaly எனும் தளத்திற்கு சென்று composerஎனும்இதனை நிறுவுகை செய்திடுவதற்கான ஆலோசனைகளையும் அறிவுரைகளையும் பெற்று அதன்படிநிறுவுகை செய்துகொள்க பின்னர் CLIஎனும் கோப்பகத்தை தெரிவுசெய்து சொடுக்குக அதன்பின்னர் composer require “twig/twig:-1.0” என்ற கட்டளைவரியை நம்முடைய CLIஎனும் கோப்பகத்தில் செயல்படுத்தியவுடன் TWIG என்பது நிறுவுகை செய்யப்பட்டுவிடும் பின்னர் composer.json, composer.lock, vendor ஆகிய துனைக்கோப்பகங்கள் நம்முடைய செயல்திட்டத்தில் உருவாக்கப்பட்டிருப்பதை காணலாம் பின்னர்indes.php எனும் பெயரிலான கோப்பினை உருவாக்கிடுக அதன்பின்னர் page.htmlஎனும் கோப்பினையும் உருவாக்கிடுக இப்போது இணைய உலாவியை செயலிற்கு கொண்டுவந்து அதில் localhost/~project_folder~/ எனும் இணைய முகவரியை உள்ளீடு செய்திடுக மேலும் விவரங்களுக்கு http://twig.wensiolabs.org/documentation/ எனும் இணைய பக்கத்திற்கு செல்க
9

OpenShiftஎனும் இணைய பயன்பாடு ஒரு அறிமுகம்

இந்த OpenShift என்பது ஒரு சேவைதளமாகும்(Platfaorm as a Service (PaaS))இது பயன்பாட்டு மேம்படுத்துநர்களை தத்தமது பயன்பாடுகளை மேககணினி சூழலில் மேம்படுத்தி விரிவாக்கம் செய்து வழங்க அனுமதிக்கின்றது மேலும் இது மேம்படுத்துநர்களையும் பொறியாளர்களையும் இணையத்தில் நேரடியாக அலுவலக வளாகத்தில் தத்தமது செயல்திட்டங்களை உருவாக்கிட வாய்ப்புகளை வழங்கதயாராக இருக்கின்றது இதனை பயன்படுத்தி கொள்வதற்காக முதலில் https://www.openshift.com// எனும் இந்த தளத்திற்கு சென்று நமக்கென தனியாக கட்டணமற்ற கணக்கினை துவங்குக
7

பின்னர் https://developers/openshift.com.en/manageing-client-tools.html/ எனும் தளத்திலிருந்து வாடிக்கையாளர் கருவிகளை பதிவிறக்கம் செய்து நிறுவுகை செய்துகொள்க. பின்னர் HTML,CSS,Python ஆகிய அடிப்படை இணையதொழிலநுட்ப விவரங்கள் நமக்கு நன்கு தெரியுமா என உறுதிபடுத்திகொள்க அதன் பின்னர் https://www.openshift.redhat.com/ எனும் தளத்தில் உள்நுழைவு செய்திடுக அங்கு நமக்கு ஒவ்வொன்றும் 1 ஜிபி நினைவக கொள்ளளவு கொண்ட மூன்று பற்சக்கரம்(Gears) போன்ற நம்முடைய மென்பொருள் செயல்திட்டத்திற்கான இடவசதி அனுமதிக்கப் பட்டிருப்பதை காணலாம் மேலும் Cartridge Python,PHP,node.js, Rubyபோன்றவைகளை பயன்படுத்திகொள்வதற்கான வசதியும் ஒதுக்கபட்டிருப்பதை காணலாம். பின்னர் இந்த OpenShift எனும் தளத்தில் நம்முடைய புதிய இணைய பயன்பாடுகளை உருவாக்கிடுவதற்காகCreate your first application now எனும் இணைப்பை தெரிவுசெய்து சொடுக்குக அதன்பின்னர் விரியும் அடுத்தபக்கத்தில் பிரதிபலிக்கும் பட்டியலில் Python2.7 என்பதை தெரிவுசெய்துகொள்க. அடுத்ததாகதோன்றிடும் பக்கத்தில் configure the application எனும் பொத்தானை தெரிவுசெய்து சொடுக்குக பின்னர் create applicationஎனும் பொத்தானை தெரிவுசெய்து சொடுக்குக அதன்பின்னர் பல்வேறு வாய்ப்புகளை அதனதன் பக்கங்களில் தெரிவுசெய்து செயல்படுத்திகொள்க அதனை தொடர்ந்து அனைத்து பயன்பாடுகளும் rhcloud.com என்பதன்கீழ் அடுக்கபட்டிருப்பதை காணலாம் அதில் flaskdemo என்பது உள்ளதாவென உறுதிபடுத்திகொள்க பின்னர் Application setting எனும் பக்கத்தில் git clone flaskdemo குறிமுறையை உள்ளீடு செய்திடுக உடன் requirements.txt ,setup.py ,wsgi.py ஆகிய மூன்று கோப்புகள் உருவாகியிருக்கும் பின்னர்
#!/usr/bin/python
import os
virtenv = os.environ[‘OPENSHIF_TPYTHON_DIR’] + ‘/virtenv/’
virtenv = os.path.join(virtenv, ‘bin/activeate_this.py’)
try;
excelfile(virtualenv, dic(_file_=virtualenv))
except IOError:
passwords
from FlaskDemo import app as application
ஆகிய குறிமுறைவரிகளின் வாயிலாக wsgi.py எனும் மாதிரிபலக உள்ளடக்கத்தை பதிலீடு செய்து கொள்க அதன்பின்னர் FlaskDemo.py எனும் கோப்பினை உருவாக்கி பின்வரும் குறிமுறைவரிகளை தட்டச்சு செய்துகொள்க
from flask import Flask
app = Flask(_name_)
@app.route(“/”)
def home();
return “

அனைவருக்கும வணக்கம்


if name == “_main_”:
app.run(debug=True)
பின்னர் பின்வரும் கட்டளைவரிவாயிலாக setup.py எனும் கோப்பினை நிறுவுகை செய்துகொள்க
# install_requires=[],
அதன்பின்னர் பின்வரும் கட்டளைவரிகளை மேலே உள்ள கட்டளை வரிக்கு பதிலாக தட்டச்சு செய்திடுக
# install_requires=[‘Flask==0.7.2’, ‘Markupsafe’]
பின்னர் பின்வரும் கட்டளைவரிகளின் வாயிலாக மாறுதல்களை OpenShift இற்குகொண்டுசெல்க
#git add
# git commit -m “Intial commit for FlaskDemo app”
# git push origin master
இதனை நம்முடைய Flask பயன்பாட்டினை இதற்கான இணையமுகவரியில் நிறுவுகை செய்திடுக

உடைமை மென்பொருளிற்கு மாற்றான திறமூலஅல்லது கட்டற்ற மெ ன்பொருட்கள்

1.Davros என்பது Dropbox அல்லது Google Drive ஆகியவற்றிற்கு மாற்றாக அதே பாவணையில் ஆனால் நாம் விரும்பும் கண்காணிப்பிற்குள் உள்ள வன்பொருட்களில் ஒருசில நிமிடநேரத்தில் நிறுவுகை செய்து கோப்பகளை சேமித்துவைத்து கொள்ள உதவும் ஒரு சிறந்த திறமூல மென்பொருளாகும்
2.அடுத்ததாக SandForms என்பது Google Forms என்பதற்கு மாற்றானதொரு திறமூலமென்பொருளாகும் இதில் Google Forms இன் அனைத்து பயன்களும் கிடைக்ககூடிய அதற்கு இணையானதொரு திறமூலமென்பொருளாகும்
3.மூன்றாவதாக அலுவலக மென்பொருளான விரிதாளிற்கு (spreadsheet) மாற்றாக இணையத்தில் நேரடியாக பயன்படுத்திகொள்ள தயாராக இருக்கும் EtherCalc எனும் திறமூலமென்பொருள் ஆனது விரிதாளின் அனைத்து வசதிகளும் வாய்ப்புகளும் வழங்க தயாராக இருக்கும் ஒரு திறமூல மென்பொருளாகும்
4.நான்காவதாக இதே அலுவலக பயன்பாடான படவில்லை காட்சியான power point என்பதற்கு இணையான அதனுடைய அனைத்து வசதிகளும் கொண்ட திறமூல மென்பொருளான HackerSlides என்பதை இணையத்தில் நேரடியாக பயன்படுத்தி கொள்க
5.ஐந்தாவதாக அலுவலக பயன்பாடுகளில் மிகமுக்கியமாக உரைகளை கையாள உதவும் எம்எஸ்வேர்டு , வேர்டு பேடு போன்ற பயன்பாடுகளின் அனைத்து வசதி வாய்ப்புகளையும் தன்னகத்தே கொண்டதொரு திறமூல பயன்பாடான Etherpad என்பதை பயன்படுத்தி பயன்பெறுக

Previous Older Entries

Follow

Get every new post delivered to your Inbox.

Join 514 other followers