Back home

الفنون رقم 001

الفنون رقم 001

ARTS هو نشاط بدأه 由左耳朵耗子--陈皓: قم بإجراء سؤال واحد على الأقل عن خوارزمية leetcode كل أسبوع، واقرأ مقالًا تقنيًا واحدًا على الأقل باللغة الإنجليزية وعلق عليه، وتعلم مهارة فنية واحدة على الأقل، وشارك المقالة مع الآراء والأفكار. (أي أن الخوارزمية والمراجعة والنصائح والمشاركة يشار إليها باسم ARTS) وتستمر لمدة عام واحد على الأقل.

الفنون 001

هذه هي المقالة الأولى، وهي سيئة الكتابة نسبيًا. وآمل أن تصبح أفضل وأفضل في المستقبل.

سؤال خوارزمية الخوارزمية

سؤال خوارزمية leetcode 344 سلسلة عكسية (سلسلة عكسية)

Write a function that takes a string as input and returns the string reversed.
Example:
Given s = "hello", return "olleh".
请编写一个函数,其功能是将输入的字符串反转过来。
示例:
输入:s = "hello"
返回:"olleh"

هذا السؤال بسيط نسبيًا ويمكن تنفيذه على النحو التالي:

char* reverseString(char* s) {
    int len=strlen(s);
    int mid=len/2;
    for(int i=0,j=len-1;i<mid,i<j;i++,j--){
        char tmp;
        tmp=s[i];
        s[i]=s[j];
        s[j]=tmp;
    }
    return s;
}

ويمكن أيضًا تنفيذه بطرق أخرى، مثل المكدس. وتجدر الإشارة إلى أن استخدام المكدس لتنفيذه يتطلب ضعف مساحة الذاكرة.

مراجعة

المقالة التالية تأتي من: https://littlebitesofcocoa.com/280-flowing-text-around-images-with-exclusion-paths;. يتحدث عن كيفية تحقيق تأثير التفاف النص بالصور، وهو أمر عملي جدًا في التطوير.

نص متدفق حول الصور مع مسارات الاستبعاد (استخدم طريقة exclusionPaths لالتفاف النص حول الصور)

يعد النص جزءًا كبيرًا من تطبيقات iOS. اليوم سنلقي نظرة على إحدى الطرق التي يمكننا من خلالها تحسين النص في تطبيقاتنا، من خلال السماح له “بالتدفق” بشكل طبيعي حول الكائنات. لنبدأ.

يعد النص جزءًا مهمًا من تطبيقات iOS. اليوم سنلقي نظرة على ما يمكننا فعله بالنص الموجود في التطبيق من خلال السماح له “بالتدفق” بشكل طبيعي حول الصورة. دعونا نبدأ.

سنبدأ بصورة “قبل”. لدينا هنا إعداد أساسي يحتوي على بعض النصوص والصورة في الزاوية اليمنى العليا. لا يوجد شيء فاخر جدًا هنا، فقط UITextView وUIImageView عاديان: سنبدأ بالصور “قبل”. هنا لدينا تخطيط مشترك مع بعض النص وصورة في الزاوية اليمنى العليا. لا يوجد شيء خاص هنا، فقط UITextView وUIImageView العاديان:

let imageView = UIImageView(image: UIImage(named: "steve"))
let textView = UITextView(frame: .zero)  
textView.text = "Here's to the crazy ones..."

<img src=“/img/15330428668213.jpg” width=“50%” height=“50%” />

هذا يبدو جيدا. لكن نصنا ضيق بلا داع. سيكون أمرًا رائعًا لو تمكنا من توسيع النص إلى العرض الكامل للجهاز. سنقوم بتغيير تخطيط عرض النص الخاص بنا بحيث يحدث: تبدو جيدة. لكن عرض النص الخاص بنا يصبح أضيق. سيكون أمرًا رائعًا لو تمكنا من توسيع النص ليشمل العرض الكامل للجهاز. سنقوم بتغيير تخطيط عرض النص ليبدو كما يلي:

<img src=“/img/15330428846540.jpg” width=“50%” height=“50%” />

حسنًا، نحن نقترب أكثر. الآن نحتاج فقط إلى طريقة لجعل النص “يتدفق” أو “يلتف” حول صورتنا. سنبدأ بالحصول على إطار عرض الصورة، ثم سننشئ مسارًا منه:

دع imagePath = UIBezierPath (المستقيم: imageView.frame) أخيرًا، سنقوم بتعيين المسار الجديد كأحد المسارات الاستبعادية لحاوية النص الخاصة بعرض النص:

textView.textContainer.exclusionPaths = [imagePath]

حسنًا، نحن نقترب أكثر. الآن نحتاج فقط إلى طريقة لجعل النص “يتدفق” أو “يلتف” حول صورتنا. نحصل أولاً على إطار عرض الصورة، ثم سنقوم بإنشاء مسار منه:

دع imagePath = UIBezierPath(rect:imageView.frame) أخيرًا، قمنا بتعيين المسار الجديد إلى أحد مسارات الاستثناء لحاوية النص الخاصة بعرض النص:

textView.textContainer.exclusionPaths = [imagePath]

<img src=“/img/15330429892173.jpg” width=“50%” height=“50%” />

النجاح! نظرًا لأن exclusionPaths عبارة عن مصفوفة، فيمكننا تدفق النص حول أي عدد نريده من الأشكال! نجاح! بما أن exclusionPaths عبارة عن مصفوفة، فيمكننا تدفق النص حولها حسب الحاجة!

<img src=“/img/15330430319407.jpg” width=“50%” height=“50%” />

العرض التوضيحي: https://github.com/danminyi/TextAroundImages

نصيحة

عند استخدام Xcode، أرغب أحيانًا في تغيير قيمة متغير معين أثناء تصحيح الأخطاء. على سبيل المثال، في الصورة أدناه، أريد تعديل قيمة imageView. النهج العام هو تعديل وإعادة التشغيل. وهذا غير فعال للغاية. بالإضافة إلى استخدام أدوات الطرف الثالث مثل الكشف والحقن، يمكنك أيضًا استخدام الطريقة التي تأتي مع xcode - نقطة التوقف، كما هو موضح في الشكل أدناه، يمكنك تعديل إطار imageView مباشرة. بعد التحقق تلقائيًا أدناه، لن تتوقف نقطة التوقف مؤقتًا عند الوصول إليها، ويمكنك تشغيلها مباشرة. أليس هذا مريحًا جدًا، خاصة عند تصحيح وظيفة تمرير المعلمة؟ أنها مريحة جداً.

شارك

أشاهد هذا الأسبوع “كيف يتم توصيل الإنترنت” (https://book.douban.com/subject/26941639/) ولم أنهي الفصل الثاني بعد. يجب أن أقول أن هذا الكتاب مناسب حقًا للمبتدئين في مجال الشبكات. لقد قرأت بعض كتب الشبكة من قبل، ولكنني لم أتمكن من الانتهاء منها. ربما مؤسستي سيئة للغاية. يشرح هذا الكتاب أولاً الصورة الكاملة للشبكة، ثم يشرح كل التفاصيل. بدءًا من عنوان URL الذي تدخله في المتصفح وحتى استجابة الخادم وحتى المتصفح الذي يعرض البيانات، فإن كل خطوة من العملية لها شرح سهل الفهم. لقد قرأت أيضًا Illustrated HTTP وIllustrated TCP/IP من قبل، لكنني لم أفهمهما تمامًا؛ العديد من الكتب تشرح نقطة واحدة فقط، مثل رجل أعمى يلمس فيلًا، غير قادر على النظر في الوضع العام؛ أو قاموا بشرح المبادئ بشكل مباشر دون دمجها مع سيناريوهات الاستخدام اليومي، مما يجعل من الصعب على الناس فهمها. يبدأ هذا الكتاب بالسيناريوهات التي تعرفها أكثر، ثم يتحدث عن المبادئ. بالطبع، هذا الكتاب موجه للمبتدئين في مجال الشبكات، لذلك لا يمكن شرح العديد من نقاط المعرفة بعمق، لذا فإن هذا الكتاب مناسب للمبتدئين فقط. لقد قمت ببرمجة المقبس من قبل، لكنني لم أفهم أبدًا العملية المحددة. بعد قراءة الفصلين الأولين، شعرت بالاستنارة فجأة. إذا كنت ترغب دائمًا في التعرف على الإنترنت بشكل متعمق، ولكن بعد قراءة الكثير من الكتب، لا تزال تشعر أنك لم تبدأ بعد أو أنك في حيرة من أمرك وليس لديك أي مفهوم للشبكة الشاملة، فهذا الكتاب مناسب لك.