代写Web|Project代做| Python作业|代写Html5- Home Page Optometrist

代写Web|Project代做|Css|Python作业|代做Html|Lab代写|代写Html5 – 这是一个综合web、python、html等的综合的web代写任务

Home Page Optometrist

Objectives

You will learn how to: Create server-side web applications with Python and Flask. Scrape web pages to extract content, including images, using LXML. Detect faces using OpenCV. Programmatically edit images using Pillow and/or OpenCV.

Overview

You will create a web application that puts glasses on any profile photos found in another person’s home page. Before After l Here’s how it works:

  1. User visits your web application and enters the URL of someone’s home page.
  2. Fetch the html for that web page and find the image that is most likely to be the face.
  3. Draw eyeglasses over the person’s eyes.
  4. Serve a copy of the original home page to the user, with glasses added to the profile photo.
Milestones

You have from Sun 11/11 to Sat 12/8 (last official day of the semester). To keep you on track, there will be three milestones, including the final turnin. (Milestone numbers do not correspond to the steps above.) Tue11/20 Milestone 1: Fetch a home page and display it to the user as is. Sat 12/1 Milestone 2: Find the profile photo and draw glasses on the face. Sat 12/8 Milestone 3: Display the home page with the modified face.

Scoring

Unlike previous assignments in this course, projects will be mostly hand-graded. Scores will be calculated based on Milestone 1 (20%), Milestone 2 (20%), Completeness (30%), and Quality/Stability (30%), Milestones 1 and 2 are there primarily to help you make progress. Feedback will be given only at the end. Completeness means finishing all parts of the project. Quality/Stability includes smooth operation, portability, usability, html5 compliance, and code quality. Projects are subject to the base requirements in the syllabus.

Building the project

Milestone 1: Fetch a home page and display it to the user as is.

Before you begin writing code, read the section on Security below. If you run into trouble, don’t hesitate to post on Piazza. This project is new. Create a web application using Flask.

  1. Create a project directory called hpo in your home directory. (mkdir ~/hpo)
  2. In your project directory, create three subdirectories: templates , static , data , and adhoc . For this stage, you will only use the templates directory.
  3. In your templates directory, create a file called root.html with the code below. This is the boilerplate for a new HTML5 document. < html lang="en"> < head > < meta charset="utf-8"> < title >Home Page Optometrist</ title > </ head > < body > < h1 >Home Page Optometrist</ h1 > < p >TODO</ p > </ body > </ html > You do not need to give attribution for this snippet because it is generic HTML5 boilerplate, with nothing added other than the name of this assignment. (Update: lang="en" was added to silence a validator warning. There will be no penalty for those who didn’t catch that for Milestone 1.) An HTML document starts with a tag that indicates what version of HTML is being used. In this case, we use which indicates HTML5. The rest of the document comes inside an tag. Most tags must be closed with another tag that has the name, prefixed with a slash (e.g., ). Inside the tag, there are two sections, and . The tag contains links to some supporting files, such as css style files. It also contains metadata and tags that direct the browser on how to interpret the rest. The specifies what title the browser should show in the browser title (and tab title). The <meta charset="utf-8"> tag specifies that if there are any non-ASCII characters in this document, they will be encoded using the UTF-8 encoding. This is similar to how we open files in Python. The <body> tag contains the visible content of the page. It may sometimes contain other things, such as links to JavaScript, that allow for scripting on the page, but mostly <body> is for the visible content.<br /> <h1> is a first-level heading. It will normally show in large font. is a container for a paragraph of other text. It will normally have a little margin above and below it.</li> </ol> <ol start="4"> <li>Create a Python file called <strong>main.py</strong> in your project directory (i.e., ~/hpo/main.py) with the following code. You may copy this code. As with any code you use with permission, you must give credit. A</li> </ol> <p>####### format is listed under Code Reuse and in the syllabus for this course.</p> <pre><code>#!/usr/local/bin/python3. import flask app = flask.Flask(__name__) @app.route('/') def root_page(): return flask.render_template('root.html') if __name__ == '__main__': app.run(host="127.0.0.1", port=int(os.environ.get("ECE364_HTTP_PORT", 8000 )), use_reloader=True, use_evalex=False, debug=True, use_debugger=False) # Each student has their own port, which is set in an environment variable. # When not on ecegrid, the port defaults to 8000. Do not change the host, # use_evalex, and use_debugger parameters. They are required for security. # # Credit: Alex Quinn. Used with permission. Preceding line only. </code></pre> <ol start="5"> <li>Find your port. Type echo $ECE364_HTTP_PORT in bash. In this document, we will assume your port is</li> </ol> <p>####### 12345. Whenever you see 12345 , please substitute your own port.</p> <ol start="6"> <li>If you are connected to ecegrid via SSH, you need an SSH tunnel. In PuTTY settings, go to</li> </ol> <p>####### Connection SSH Tunnels. Source port: 12345 Destination: localhost: 12345</p> <ol start="7"> <li>Test your web application. python3 main.py</li> </ol> <p>####### Open your web browser and go to http://localhost: 12345 You should see a simple message.</p> <ol start="8"> <li>Add an input form to your template. An HTML form looks like this<br /> <form method="" action=""> </form> </li> </ol> <p>####### The method should be "GET". That means any inputs entered by the user will be passed to the server</p> <pre><code>as part of the URL. For now, leave the action blank. </code></pre> <ol start="9"> <li>Inside your<br /> <form> element, add a text field (<input type="text" name="url" size="40">) and a submit button (<input type="submit" value="Submit">). 10.Add a new route for the URL "view/". (You have one, called root_page() which is mapped to "/". You are making another route similar to that. Name the function view_page(). It should use flask.request.args to get the URL that the user entered. Then, use regular expressions to verify that the URL looks like a real URL. Use regular expressions to verify that the URL is not for any social <a href="/category/networkzuoyedaixie/" title="network代写 代写计算机网络"> Network </a>site that you know or your friends know of. You can find a list by searching Google for "list of social networks". We recognize the</li> </ol> <p>there will be some variation. We are intentionally leaving a few details underspecified to get you used to thinking for yourself. Any reasonable approach will be given full credit. You may share ideas for social network sites and addresses with friends if you wish. 11.Add code to your view_page() function to fetch the requested page. Use urllib.request to fetch the URL. Read the relevant part of the urllib.request documentation and use</p> <p>####### the method under Adding HTTP headers . Set the User-Agent header to the following string (exactly),</p> <p>####### substituting your Purdue login for USERNAME . This is so anyone who finds us in their logs can see what</p> <pre><code>we're up to and contact us in case of any concerns. </code></pre> <p>####### PurdueUniversityClassProject/1.0 ( USERNAME @purdue.edu https://goo.gl/dk8u5S)</p> <p>####### You may copy the code from the Adding HTTP headers section of the documentation. That code is</p> <p>explicitly licensed under the Python Software Foundation License, which allows reuse. However, you must give credit with the following comment (exactly).</p> <h1>Credit: Adapted from example in Python 3.4 Documentation, urllib.request</h1> <h1>License: PSFL https://www.python.org/download/releases/3.4.1/license/</h1> <h1>https://docs.python.org/3.4/library/urllib.request.html</h1> <p>Be clear what part of your code is derived from the borrowed code. At this point, your function should have a variable with the HTML (as a string) found at the given URL. 12.Try testing your application. For now, clicking Submit won’t do anything. That is because the action attribute is not filled in. Go ahead and try it anyway. It may be instructive to witness this. 13.Go back to your root.html and fill in the action. In theory, you could fill in "view/" since that is the relative URL of the endpoint that it should submit to. However, when developing web applications, you should always avoid duplicating strings, such as relative URLs. It is better to refer to something in the code. In Flask, this is done using the url_for(…) function. Calling url_for("view_page") returns "view/", the default URL to which the view_page(…) function is mapped. We need to dynamically insert that into the template, when your program runs. Flask uses a template language called Jinja for its HTML templates. This allows you to fill in information at runtime (i.e., when your endpoint function is called). To fill in a value or the result of a function call, you use {{ }} (where is a Python expression). In your template, change action="" to action="{{ url_for("view_page") }}". (We are giving you the code, but you should understand what it does. 14.Try testing your application again. From your root page, enter the URL to any home page. (You can use mine, if you wish.) It still won’t look right, yet, but it should be close. The problem is that any supporting files (images, CSS style files, JavaScript, etc.) that the HTML document refers to using relative URLs will now be pointed to your site. For example, an image in HTML might be specified like <img src="headshot.jpg" alt="my profile photo">. The image filename ("headshot.jpg") is actually a relative URL. When the page loads from a person’s home page (e.g., http://example.com/~js/), it expands and requests the image from <a href="http://example.com/~js/headshot.jpg.">http://example.com/~js/headshot.jpg.</a></p> <pre><code>15.Modify your view_page() function so that it loads the supporting files correctly. The easiest way (to think about) is to expand relative URLs to absolute URLs (i.e., including the full domain name). You could do this manually. Alternatively, the lxml library has a method for this, if you want to dig into the documentation. A fancier way to do this is to add a <base> tag to the document. That tells the browser to expand relative URLs using a different URL from where the page was loaded. For more information and an example, see the documentation of the <base> tag. 16.Test your application again. For reasonably simple pages, it should display the same from your site as it did from the original location. 17.Edit your root page template to ensure that it is understandable and nominally presentable. Write a </code></pre> <p>####### short explanation of what will happen. (1-2 sentences should suffice.) You may add styling if you wish,</p> <p>but that is optional. (This is text the user will see, not a comment in your code.) This will be checked by a TA. There are no additional points for beauty per se, but it should be understandable to someone not familiar with the project, and it should not look ridiculous. For example, there should be no code fragments showing, text should be legible, and inputs should be labelled. Do not use any site templates, or libraries that modify an entire site’s appearance (e.g., Bootstrap). 18.Check the output of your root page with the W3C validator service to ensure that it outputs valid HTML markup. It essentially checks for syntax errors. Browsers will tolerate malformed HTML, but different browsers may interpret it differently. Validation ensures that your app looks the same to everyone. 19.To submit, add your hpo directory (svn add hpo) and commit it (svn commit hpo). There will be no feedback given for Milestone 1 and Milestone 2 in the manner done for the labs and prelabs, but we will be happy to give feedback in office hours. Final grading will be done primarily by hand, but may employ some automated checks (e.g., for code quality). <strong>Checklist</strong> Root page displays a form for entering a URL, with brief instructions. Root page HTML passes W3C validator as HTML5. Entering URL and clicking submit returns a page which looks the same as the original, but with the HTML served from your application. Follow base requirements, and code quality standards, as well as rules for code reuse, security, and ethics given in this document.</p> <h5>Milestone 2: Find the profile photo and display it to the user</h5> <p> <em>You should have already read the section on Security. There are penalties for not following the guidelines.</em> In this stage, you will get your application to level that can find the profile photo in a page, find the face within the photo, add glasses to the face, and display the image to the user.</p> <ol> <li>Write a helper function to create filenames for images, based on their URL.</li> </ol> <p>Your function should be called <strong>make_filename(url, extension)</strong> and should return the SHA checksum of the given URL (in hex), concatenated with the given file extension.</p> <blockquote> <blockquote> <blockquote><p> make_filename(b’http://people.eecs.berkeley.edu/~graham/SLG1jpg.jpeg’, ‘jpg’) ‘e67b1add53d3e079020b6ded39efc175b6553251.jpg’ </p></blockquote> </blockquote> </blockquote> <p>This will be used later, to create the filenames with with you will store profile images. This function should require only one line of code inside the function. While we’re here, let’s take a dive into checksums. The concept is widely used in web applications, distributed systems, system security, block chain (e.g., bitcoin), cryptography, databases, and beyond. <strong>Checksums</strong> SHA1 is a checksum function. In general, checksum functions take a string of bytes (e.g., contents of a file) and return a shorter string of bytes that (almost) uniquely identifies the input. If you modify the input, even just one byte, the checksum will change completely. Unlike compression (e.g., zip), with checksums, it is impossible to get the input from the checksum. Thus, it can be thought of as a one-way function. For a given checksum function, the output (checksum) will be the same length. For example, SHA1 always produces 160-bit (20-byte) checksums. The actual checksum is binary bytes, but we often display them in hex digits (0123456789abcdef). Recall from ECE 26400 that one hex digit can store 4 bits, and thus one byte (8 bits) requires two hex digits. In bash, the sha1sum command produces a SHA1 checksum for files or whatever you pass on stdin. $ sha1sum jellyfish.jpg e379d8f44c3b0c2ea476494481a84701f3cacc53 jellyfish.jpg $ echo -n "ECE 36400" | sha1sum a56554a16804b49e9b8867b52b2fcbc495c4b0b9 – In Python, we use the hashlib module to create checksums.</p> <blockquote> <blockquote> <blockquote><p> import hashlib hashlib.sha1(b"ECE 36400").hexdigest() ‘a56554a16804b49e9b8867b52b2fcbc495c4b0b9’ </p></blockquote> </blockquote> </blockquote> <p>The hashlib functions require a byte string (b"…"). Passing a unicode string ("…") results in an error.</p> <blockquote> <blockquote> <blockquote><p> hashlib.sha1("ECE 36400").hexdigest() Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: Unicode-objects must be encoded before hashing </p></blockquote> </blockquote> </blockquote> <p>You can convert a unicode string (str) to a byte string (bytes) with s.encode(‘utf8’).</p> <blockquote> <blockquote> <blockquote><p> s = "abc" s.encode(‘utf8′) b’abc’ </p></blockquote> </blockquote> </blockquote> <p>######## >>></p> <pre><code>>>> s = "32F" >>> s.encode('utf8') b'\xe2\x89\x8832\xc2\xbd\xc2\xb0F' >>> Why bother? As you should remember from the section on Security, strings from the user should never be used as part of filenames. The URL to the home page is a string from the user. The image filename (in that home page) is also considered a string from the user. There is always a chance a user could try to trick your application into overwriting some crucial files by passing a malicious URL or a URL to a page with a maliciously named image. As a trivial example, imagine if the image filename were "../.bashrc" and the contents of the image was actually a new .bashrc file with commands they wanted you to execute. Next time you logged in, you would be execute whatever shell commands the attacker wanted you to execute. That particular attack would most likely fail, but history is full of more sophisticated ploys of a similar nature. Using a SHA1 checksum in hex format guarantees that only the characters "0123456789abcdef" can be part of the filename. Other methods of creating a safe filename can be vulnerable to tricky attacks. For security, you must store images using a filename that is guaranteed to be safe. Using the checksum of the URL (nearly) guarantees that you will not conflict with an image file from some other home page. The chance of two URLs (or other inputs) having the same SHA1 checksum is less than 0.000000000000000000000000000000000000000000000007%. For high security applications, even stronger checksum functions are available, with checksums of up to 512 bits (and possibly more). Note: You do not need to give attribution for the snippets in this box ("Checksums"). </code></pre> <ol start="2"> <li>Write a helper function to extract and save all images in the given home directory. Your function should be called <strong>fetch_images(etree)</strong> . It will search the given etree for images, fetch each one using urllib.urlopen(…) (with the special header, as before), and save each image into a temporary directory. You will build an OrderedDict that associates image filenames with the nodes in the ElementTree. There are a few requirements. Requirement #1: Save images using a filename generated using your make_filename(…). Requirement #2: It must be a context manager function. The with statement should return an OrderedDict where the keys are image filenames and the values are nodes in the ElementTree. (We will illustrate how to make a context manager function below.) Requirement #3: It must automatically cd to the temporary directory, and then cd back to the original location when the with statement exists. In addition, the temporary directory must be deleted. (We give some starter code below to make this easy.) Requirement #4: When creating temporary files, do not simply write them in your project directory. You need to create a separate directory for the temporary files, with a name that is guaranteed to be</li> </ol> <p>unique. Python provides a function called tempfile.mkdtemp(…) which does this. You must use it, directly or indirectly. (The starter code we provide makes this easy.) When creating temporary directories, you must use the tempfile.mkdtemp(…) function (or a helper function that calls it). Usage: You will call your fetch_images(etree) like this. <strong>with</strong> fetch_images(etree) as filename_to_node: _# Do stuff with images inside the temp directory.</p> <h1>Back in original directory again._</h1> <p><strong>pushd_temp_dir(</strong> …… <strong>)</strong> <strong>helper function</strong> To allow you to focus on other aspects of the project, we are providing this helper function. Using pushd_temp_dir(…) is optional, but it should make your life even easier. You may copy or adapt the code below. Attribution in the required format is required. <strong>import</strong> <strong>os</strong> , <strong>sys</strong> , <strong>tempfile</strong> , <strong>shutil</strong> , <strong>contextlib</strong> @contextlib.contextmanager <strong>def</strong> pushd_temp_dir(base_dir=None, prefix="tmp.hpo."): _”’ Create a temporary directory starting with {prefix} within {base_dir} and cd to it. This is a context manager. That means it can—and must—be called using the with statement like this: with pushd_temp_dir(): …. # We are now in the temp directory</p> <h1>Back to original directory. Temp directory has been deleted.</h1> <p>After the with statement, the temp directory and its contents are deleted._</p> <p>####### Putting the @contextlib.contextmanager decorator just above a function</p> <pre><code>makes it a context manager. It must be a generator function with one yield. </code></pre> <p>_- base_dir — the new temp directory will be created inside {base_dir}. This defaults to {main_dir}/data … where {main_dir} is the directory containing whatever .py file started the application (e.g., main.py).</p> <ul> <li>prefix —– prefix for the temp directory name. In case something happens that prevents ”’_ <strong>if</strong> base_dir <strong>is</strong> None: proj_dir = sys.path[ 0 ] <em># e.g., "/home/ecegridfs/a/ee364z15/hpo"</em> main_dir = os.path.join(proj_dir, "data")</li> </ul> <p> <em># e.g., "/home/ecegridfs/a/ee364z15/hpo/data"</em> <em># Create temp directory</em> temp_dir_path = tempfile.mkdtemp(prefix=prefix, dir=base_dir) <strong>try</strong> : start_dir = os.getcwd() <em># get current working directory</em> os.chdir(temp_dir_path) <em># change to the new temp directory</em> <strong>try</strong> : <strong>yield</strong> <strong>finally</strong> : <em># No matter what, change back to where you started.</em> os.chdir(start_dir) <strong>finally</strong> : <em># No matter what, remove temp dir and contents.</em> shutil.rmtree(temp_dir_path, ignore_errors=True) _# __________________________________________________________________________</p> <h1>EXAMPLE USAGE_</h1> <p><strong>assert</strong> <strong>not</strong> os.path.exists("a.txt") <strong>with</strong> make_temp_dir(): <strong>with</strong> open("a.txt", "w", encoding="utf-8") <strong>as</strong> outfile: outfile.write("a a a") <strong>assert</strong> os.path.isfile("a.txt") <strong>print</strong> (os.path.abspath("a.txt")) <strong>with</strong> open("a.txt", "r", encoding="utf-8") <strong>as</strong> infile: <strong>print</strong> (infile.read()) <strong>assert</strong> <strong>not</strong> os.path.exists("a.txt") Here is a skeleton for your fetch_images(…). You may use this snippet (below) without attribution. @contextlib.contextmanager <strong>def</strong> fetch_images(etree): <strong>with</strong> pushd_temp_dir(): filename_to_node = collections.OrderedDict() <em>#</em> <em># Extract the image files into the current directory</em> <em>#</em> <strong>yield</strong> filename_to_node This will involve traverse the HTML document using the methods you practiced last week. After saving each image, you will use code something like this: filename_to_node[filename] = node Tip: You should test this function in isolation. Do not attempt to do all of your testing via your web application. You will be wasting your time. (This was covered in lecture on 11/19.)</p> <pre><code> You cannot reliably infer the file extension from the URL. You need to use Content-Type, just as you did in <a href="/category/lab代写/" title="lab代写 代写lab"> lab </a>12. (That was to get you ready for this.) </code></pre> <ol start="3"> <li>Write a helper function that returns the dimensions of an image. It should be called <strong>get_image_info(filename)</strong> and should return a dict like this:<br /> <blockquote> <blockquote> <blockquote><p> img_info = get_image_info(filename) print( img_info ) {"w":400, "h":600} </p></blockquote> </blockquote> </blockquote> <p>img_info["w"] and img_info["h"] are the dimensions of the entire image, in pixels. In this project, we will use OpenCV, a very popular library for computer vision. import cv To open a single image using OpenCV: img = cv2.imread(path) OpenCV can get the dimensions of the image. Use the OpenCV documentation to find out how. Note: cv2.imread() cannot read GIF files. Here are some suggestions for how you might deal with this: Convert them to another format (e.g., JPG) in fetch_images(…) and then deal with them as JPG thereafter. You can use the Pillow library (aka PIL) for that. Convert to JPG temporarily within your get_image_info(filename) so that OpenCV can open them, and then delete the temporary JPG file when you are done with it. It’s up to you. Just make sure your application can deal with profile photos, even if they are in GIF format. It is best to avoid keeping two copies of the same image (e.g., JPG and GIF of the same photo) around at the same time, but this is not a strict requirement.</li> <li>Add a comment in your code, within get_image_info(filename) with the URL of where you found how to get the width and height of the image. It should be in the official OpenCV documentation (i.e., not a Stackoverflow post).</li> <li>Modify your get_image_info(filename) helper function to return details about faces in the image. Your enhanced get_image_info(filename) should return a dict like this:<br /> <blockquote> <blockquote> <blockquote><p> img_info = get_image_info(filename) print( img_info ) {"w":400, "h":600, "faces":[{"w":200, "h":200, "x":100, "y":50}, …]} </p></blockquote> </blockquote> </blockquote> <p>img_info["w"] and img_info["h"] are the same as before. img_info["faces"] should be a list of dictionaries, each representing one face in the image.</li> </ol> <pre><code>img_info["faces"] must be sorted by the size of the face. Thus, img_info["faces"][0] should be the largest face in the image. To sort by face size, use the key=... parameter to sort(...). See the Python documentation for sort(...). If there are no faces found in the image, then img_info["faces"] will be []. To find faces in an image, we will use OpenCV, a very popular library for computer vision. import cv The method we are using is called Haar cascades. First, you create a classifier object. It has methods which can locate faces within an image. Normally, to create a classifier from scratch, one would need a large collection of photos, along with human-created data indicating the location and size of each face. That is called training data. Then, the classifier generalizes from that data to find other faces in new images. For this project, we are providing the underlying data for a pre-trained classifier. The data is here: FACE_DATA_PATH = '/home/ecegridfs/a/ee364/site-packages/cv2/data/haarcascade_frontalface_default.xml' Do not copy that file to your home directory. Your code should read it from that location when running on ecegrid. To create the classifier: face_cascade = cv2.CascadeClassifier(FACE_DATA_PATH) Before you can find the faces using your classifier, you will need to convert the image to grayscale. You do not need to save it to disk. This is done in memory. To create a grayscale version of the image: = cv.cvtColor(img, cv.COLOR_BGR2GRAY) Finally, fetch the face information. faces = face_cascade.detectMultiScale(img_grayscale, 1.3, 5) Each face will be as a 4-tuple of (x, y, w, h). Test and make sure the results are reasonable. Test in isolation, not as a web app. </code></pre> <ol start="6"> <li>Write a helper function to find the image and node that is most likely to contain the main profile photo. It should be called <strong>find_profile_photo_filename(filename_to_etree)</strong> , and should return the filename of the image most likely to be the main profile photo. You have some flexibility on how you determine which is the profile photo. Be reasonable.</li> <li>Write a helper function to copy the most likely profile photo to the static directory within your application. It will be called <strong>copy_profile_photo_to_static(etree)</strong> and will return the absolute path to that file. To get the path to your static directory, use the method illustrated in the pushd_temp_dir(…) function. You may also use methods from the flask API. Do not hard code the absolute path.</li> </ol> <p>####### This helper function will use (i.e., call) the helper functions you created above. </p> <pre><code>Reminder: Test in isolation, without running as a web server. Exactly how you do this is up to you. </code></pre> <ol start="8"> <li>Modify your "/view" endpoint function so that it displays the most likely profile photo. When someone enters a URL and clicks submit from your root page, it use the helper functions you created above to copy the profile image to your static directory. Then, it should redirect to a static URL that displays only the profile image. To get a static URL: static_url = flask.url_for(‘static’, filename=) Note: The filename that you pass to flask.url_for(‘static’, filename=) should be a base filename, not an absolute path. To get the base filename, use os.path.basename(abs_path). To redirect from within your endpoint function: return flask.redirect(url) Note: This time, instead of seeing a web page, the user will see only an image. This is temporary, just for Milestone 2.</li> <li>Submit using the same method used for Milestone 1.</li> </ol> <h5>Milestone 3: Add glasses to the face and display in the modified page.</h5> <p><em>More details may be added. This is intended to be much lighter than the first two milestones.</em></p> <ol> <li>Write a function that modifies an image to add glasses to the face (if any). It should be called add_glasses(filename, face_info) where face_info is a dict like {"w":, "h":, "x":, "y":}. To find the eyes, as best as this classifier is able, you can use an eye cascade classifier. EYE_DATA = "/home/ecegridfs/a/ee364/site-packages/cv2/data/haarcascade_eye.xml" Create the classifier in the same was as you did for faces.</li> <li>Modify your "/view" endpoint to display the entire home page, with the modified image substituted for the original image.</li> <li>Submit using the same method used for Milestone 1.</li> </ol> <h4>Bonus</h4> <p>You may receive up to 10 bonus points for extensions to the project. Each bonus point counts as 1% toward your final grade. For example, if you had an average of 50% on the prelabs but received the maximum bonus on the project, then you would recoup half the loss from the prelabs. We are providing a few examples, but we strongly encourage your proposals for bonus extensions.</p> <p><strong>Proposing an extension.</strong> To propose an extension idea, post to Piazza with a subject line like this:</p> <p>####### Bonus proposal: </p> <p>In the message, use the following format: Idea: I propose to . <em>(Describe your idea.)</em> Effort: I expect this will entail . <em>(Estimate effort in terms of steps, hours, and/or sloc.)</em> Proposed credit: bonus points We will respond with either an approval or an adjustment of your proposed points. If you don’t receive a reply within 24 hours of your post (or latest edit), your proposal is automatically approved. <strong>Sharing ideas.</strong> Proposals may be private (note to instructor and TAs) or public (even if anonymous to your classmates). Public proposals may attempted by others (separately). Public is nice but not required. <strong>Fairness.</strong> If an extension is approved for one person, others may use it, as well. It is impossible to ensure perfect equivalence of points/effort between bonus extensions. Programming effort is hard to compare. Different people require different amounts of time and code to accomplish the same goal. I will do my best. <strong>Adjustments.</strong> If your bonus ends up being much more involved that it first appears, we will consider increasing the points. If you find a shortcut that makes it trivial (e.g., 100 sloc 5 sloc), we might ask you to either extend it or decrease the amount of credit. We consider this unlikely, and reserved for extreme cases. <strong>Examples.</strong> The following are examples, and automatically approved. We encourage you to think of your own. Very creative extension ideas (i.e., things we wouldn’t have thought of ourselves) may receive additional credit.</p> <ol> <li>Add options to specify different colors or styles of glasses. 1 point</li> <li>Add mustache or hat. 2 points</li> <li>Scrape the Purdue ECE faculty directory and make your own directory with links to modified photos for all Purdue faculty. 4 bonus points</li> <li>Detect if person is already wearing glasses. 5 bonus points <strong>Notification.</strong> If you attempt a bonus, make a note in a file called BONUS.txt with the Piazza message URL of your proposal or the example number (if you use one above).</li> </ol> <h4>Rules</h4> <h5>Code reuse allowed with limitations</h5> <p><strong>This is an individual project.</strong> You are expected to develop the project on your own. However, some code reuse from the web is not uncommon in some software development projects. It depends on the organization you are working for and/or the project rules and goals. Read this section carefully before copying any amount of code from anywhere. <strong>What is/isn’t allowed.</strong> For this project, some code reuse from the web is allowed. There are limitations. You may reuse example code from the official Python documentation, provided you give credit with the following comment (exactly).</p> <h1>Credit: Adapted from example in Python 3.4 Documentation, urllib.request</h1> <h1>License: PSFL https://www.python.org/download/releases/3.4.1/license/</h1> <h1>https://docs.python.org/3.4/library/urllib.request.html</h1> <p> You may copy example code from the official Flask, OpenCV, and lxml documentation, provided the license allows it and you give attribution in a comment very similar to the snippet above. You may copy any example snippet from this document, unless otherwise prohibited in/near the snippet. You may reuse up to 10 logical lines of code (lloc) from preexisting sources on the web, provided the source has an explicit license that allows reuse (e.g., MIT License, Creative Commons, etc.), and attribution is noted in your code, as specified below. Code copied from the official Python, Flask, OpenCV, and lxml documentation, and from this document, does not count toward the 10-line limit. StackOverflow uses a Creative Commons license for all posted snippets, unless otherwise mentioned. Snippets from the Python documentation do not count toward this limit. You may not use code written by anyone at Purdue (including course staff), even if it is posted online, unless explicitly allowed. <strong>Attribution.</strong> You must give explicit credit in a comment that begins with "Credit: " and includes the following information: author and/or project name (whichever is most important) For Stackoverflow (or similar) posts, click the profile and try to find the person’s name. If anonymous, then list the credit as ‘user123’ at Stackflow (for example). license (e.g., MIT, CC-BY-3.0) Give URL to license for any license other than MIT, BSD, and CC-*. URL where you found the code Be clear about what is reused (e.g., above 3 lines, this function, etc.) and whether you Copied (verbatim), Copied with minor changes (near-verbatim), or Adapted (copied as starting point, but with major changes). Example:</p> <h1>Credit: Adapted from example in Python 3.4 Documentation, urllib.request</h1> <p> All other code reuse, including from any of the following, is strictly prohibited unless explicitly allowed. Code written by someone else in this class (even if it is posted online) Example code from ECE 36400 lecture slides or examples. Example code written or posted by anyone at Purdue. Python modules other than what is specified in this document. <strong>Allowed modules:</strong> Python standard library modules (e.g., os, urllib, shutil, etc.), lxml, flask, OpenCV (cv2), validator, Pillow/PIL, google-cloud-vision is allowed for those doing relevant bonuses. Any other source not explicitly allowed. <strong>Suggesting other Python modules.</strong> Feel free to suggest Python modules that you would like to use. We will consider adding them. (We will not add BeautifulSoup, a popular scraping module, because its API design is contrary to what we teach in this course.)</p> <h5>Copyright and terms of service</h5> <p>Do not violate the copyright of any person or entity. Historically, copyright law has allowed brief storage of web content, in the course of providing some service (e.g., proxy servers). Do not violate the terms of service of any web site. Social network sites typically have specific policies on web scraping. Do not use this on such sites. Test only with home pages that do not have such a notification. If you are unsure about copyright or terms of service issues, check with the instructor.</p> <h5>Security</h5> <p>Universities are a popular target for malicious hackers due to the relatively open infrastructure, high bandwidth, personal information of prominent individuals, and access to technical secrets. Some servers are protected by firewalls that block access from outside the university. However, once an adversary gains access to a machine or account in a university, they can use that internal location to attack internal protected targets. Your application matters. You might think a small class project application would be irrelevant to security concerns, but the opposite is sometimes true. Small, ad hoc applications (e.g., class projects) are often written hastily without systematic consideration of security, code review, and audits. However, you can greatly reduce the risk that your application will be misused by following two four rulesat all times. Follow these security rules at all times (including development, debugging, testing, etc.). Failure to follow these rulesat any time during development, debugging, and testing of the projectwill result in penalties of 10-20% (depending on severity) of the total possible project score, per occurrence.</p> <ol> <li><strong>Always use the code below to start your server.</strong> app.run(host="127.0.0.1", port=os.environ.get("ECE364_HTTP_PORT", 8000 ), use_reloader=True, use_evalex=False, debug=True, use_debugger=False) <em>Explanation</em> The required parameters to app.run(…) disable features that would increase your risk. <strong>host="127.0.0.1"</strong> ensures that your application is only accessible to people logged into ecegrid via SSH (i.e., browsing through a tunnel) or ThinLinc.</li> </ol> <pre><code>use_evalex=False turns off a feature that lets you debug in the browser. While convenient, it would give an attacker permanent command line access to your account. The meager security mechanism it uses is not hardened enough to be trusted. use_debugger=False ensures that tracebacks are not shown in the browser (in case of errors). You can get the same information at the command line. Seeing the errors in the browser is slightly more elegant to look at, but it enables an attacker to examine your code and find vulnerabilities. </code></pre> <ol start="2"> <li><strong>Do not pass user input (e.g., request.args, request.form, etc.) to subprocess.(…) or</strong> <strong>os.system(…), or use as part of filenames.</strong> If you’re unsure, the safest path is to just not use subprocess.(…) or os.system(…), and name all files with strings given in your code. <em>Explanation</em> Many attacks occur because an attacker sends inputs that the application was not expecting. They</li> </ol> <p>####### can easily send your application inputs even without using your HTML form. There are many tricks.</p> <pre><code>Some people think they can sanitize the inputs to make them safe (e.g, by removing certain characters). That is risky because many attackers find clever ways to defeat your defenses. </code></pre> <ol start="3"> <li><strong>Do not use</strong> <strong>eval(</strong> …… <strong>)</strong> <strong>,</strong> <strong>exec(</strong> …… <strong>)</strong> <strong>, or</strong> <strong>execfile(</strong> …… <strong>) in your code</strong> <strong>.</strong> <em>Explanation</em> These were not covered in ECE 36400, so it is unlikely that you would use them. They execute code given as a string (or file). They are rarely needed. In web programming, if you accidentally pass user-provided text (e.g., from URL parameter) to them, then an attacker can compromise your application, and permanently control your account. Note: These rules implement multi-layered security. We must always assume some of our defenses will fail.</li> </ol> <h5>Ethics</h5> <p>We are trying something new and (we hope) fun for the project this semester. However, there is potential for pranks or harassment in the form of defacing other people’s home pages. <strong>Do not modify any photo or home page content in a way that may reasonably be expected to disparage, defame, provoke, or harass any person.</strong> That includes adding unkind textual annotations, body parts, body fluids, changing eye color, stretching to change shape, etc. Adding eyeglasses to a person’s eyes is allowed (unless you have reason to believe it would upset them). Ethics education is required by ABET, the accrediting organization that certifies Purdue to grant engineering degrees. The IEEE, ACM, AAAI, and all other major professional organizations have ethical standards. Misusing project resources (e.g., ecegrid, code snippets, etc.) to disparage, defame, provoke, or harass, will result in penalties of 10-30% (depending on severity) of the total possible project score, per occurrence.</p> <h4>Q&A</h4> <p>This will be filled in later.</p> <h4>Updates</h4> <p>Updates will be logged here. 11/11/2018 1:30 PM Posted 9:35 PM Correction: Python file should be main.py, in your hpo/ directory (not in templates). 10:20 PM By request, the module validators is now installed and allowed. It may help with checking if a web address is valid. You could also use the standard module urlparse. 11/12/2018 10:52 AM Clarification: Highlighted the Python filename (main.py) in yellow; added a few words. 11/19/2018 6:00 PM Minor clarifications. lang="en" in HTML boilerplate 11:41 PM Submission instructions; more explanation about lang="en" 11/24/2018 6:51 PM Added instructions for Milestones 2 and 3. 11/30/2018 3:52 PM Added clarification about base filename to Milestone 2 step 8. 4:40 PM Attribution is not needed on hashlib.sha1(b"").hexdigest().</p> <p>####### 4:49 PM Underlined "This helper function will use the helper functions you created above."</p> <pre><code>5:05 PM Added warning about not trusting URL to get file extension. Added tip to Milestone 2 step 3 about GIF images. 12/1/2018 1:50 AM Changed variable name from gray to img_grayscale. 2:00 PM Clarified the list of modules that may be used. </code></pre> </div><!-- .entry-content --> <footer class="entry-footer"> <div class="entry-footer-right"> </div> <span class="cat-links"> 发帖时间: <a href="https://zuoyedaixie.net/category/assignmentzuoyedaixie/" rel="category tag">CS assignment代写</a>, <a href="https://zuoyedaixie.net/category/cszuoyedaixie/" rel="category tag">CS作业代写</a>, <a href="https://zuoyedaixie.net/category/cshomework/" rel="category tag">HomeWork cs作业</a>, <a href="https://zuoyedaixie.net/category/python/" rel="category tag">Python 作业代写</a>, <a href="https://zuoyedaixie.net/category/webdaixie/" rel="category tag">Web程序代做</a>, <a href="https://zuoyedaixie.net/category/canadacsdaixie/" rel="category tag">加拿大程序代写</a>, <a href="https://zuoyedaixie.net/category/americancsdaixie/" rel="category tag">美国程序代写</a> </span> <span class="tags-links"> 归档位置: <a href="https://zuoyedaixie.net/tag/cs-assignment-zuoyedaixie/" rel="tag">CS Assignment</a>, <a href="https://zuoyedaixie.net/tag/cs%e4%bb%a3%e5%86%99/" rel="tag">CS代写</a>, <a href="https://zuoyedaixie.net/tag/html5%e4%bb%a3%e5%86%99/" rel="tag">html5代写</a>, <a href="https://zuoyedaixie.net/tag/html%e4%bb%a3%e5%86%99/" rel="tag">html代写</a>, <a href="https://zuoyedaixie.net/tag/network/" rel="tag">network</a>, <a href="https://zuoyedaixie.net/tag/python/" rel="tag">python</a>, <a href="https://zuoyedaixie.net/tag/python-code-zuoyedaixie/" rel="tag">python code代写</a>, <a href="https://zuoyedaixie.net/tag/pythondaixie/" rel="tag">python代写</a>, <a href="https://zuoyedaixie.net/tag/pythonzuoyedaixie/" rel="tag">python作业代写</a>, <a href="https://zuoyedaixie.net/tag/pythonchengxudaixie/" rel="tag">python程序</a>, <a href="https://zuoyedaixie.net/tag/web/" rel="tag">web</a>, <a href="https://zuoyedaixie.net/tag/webzuoyedaixie/" rel="tag">web作业代写</a>, <a href="https://zuoyedaixie.net/tag/webchengxudaixie/" rel="tag">web程序代写</a>, <a href="https://zuoyedaixie.net/tag/daixiecode/" rel="tag">代写code</a>, <a href="https://zuoyedaixie.net/tag/daixiecszuoye/" rel="tag">代写CS作业</a>, <a href="https://zuoyedaixie.net/tag/liuxueshengdaixiechengxu/" rel="tag">留学生程序代写</a>, <a href="https://zuoyedaixie.net/tag/chengxudaixie/" rel="tag">程序代写</a>, <a href="https://zuoyedaixie.net/tag/bianchengdaixie/" rel="tag">编程代写</a>, <a href="https://zuoyedaixie.net/tag/bianchengzuoyedaixie/" rel="tag">编程作业代写</a>, <a href="https://zuoyedaixie.net/tag/jisuanjizuoyedaixie/" rel="tag">计算机作业代写</a> </span> </footer><!-- .entry-footer --> </article><!-- #post-## --> <nav class="navigation post-navigation" role="navigation" aria-label="文章"> <h2 class="screen-reader-text">文章导航</h2> <div class="nav-links"><div class="nav-previous"><a href="https://zuoyedaixie.net/operating-system%e4%bb%a3%e5%86%99linuxassignment%e4%bd%9c%e4%b8%9athread%e4%bb%a3%e5%81%9a/" rel="prev">← Operating System|代写Linux|Assignment作业|Thread代做-Thread Pools and Dispatch Queues</a></div><div class="nav-next"><a href="https://zuoyedaixie.net/%e4%bd%9c%e4%b8%9adata-structures%e4%bb%a3%e5%81%9aoperating-systemc%e4%bb%a3%e5%81%9a%e4%bb%a3%e5%86%99algorithm%e4%bb%a3%e5%81%9ajavathread-thread-scheduling/" rel="next">作业Data Structures|代做Operating System|C++代做|代写Algorithm|代做Java|Thread -Thread Scheduling →</a></div></div> </nav> <div id="comments" class="comments-area"> <div id="respond" class="comment-respond"> <h3 id="reply-title" class="comment-reply-title">发表评论 <small><a rel="nofollow" id="cancel-comment-reply-link" href="/%e4%bb%a3%e5%86%99webproject%e4%bb%a3%e5%81%9a-python%e4%bd%9c%e4%b8%9a%e4%bb%a3%e5%86%99html5-home-page-optometrist/#respond" style="display:none;">取消回复</a></small></h3><form action="https://zuoyedaixie.net/wp-comments-post.php" method="post" id="commentform" class="comment-form" novalidate><p class="comment-notes"><span id="email-notes">电子邮件地址不会被公开。</span> 必填项已用<span class="required">*</span>标注</p><p class="comment-form-comment"><label for="comment">评论</label> <textarea id="comment" name="comment" cols="45" rows="8" maxlength="65525" required="required"></textarea></p><p class="comment-form-author"><label for="author">姓名 <span class="required">*</span></label> <input id="author" name="author" type="text" value="" size="30" maxlength="245" required='required' /></p> <p class="comment-form-email"><label for="email">电子邮件 <span class="required">*</span></label> <input id="email" name="email" type="email" value="" size="30" maxlength="100" aria-describedby="email-notes" required='required' /></p> <p class="comment-form-url"><label for="url">站点</label> <input id="url" name="url" type="url" value="" size="30" maxlength="200" /></p> <p class="comment-form-cookies-consent"><input id="wp-comment-cookies-consent" name="wp-comment-cookies-consent" type="checkbox" value="yes" /> <label for="wp-comment-cookies-consent">在此浏览器中保存我的名字、电邮和网站。</label></p> <p class="form-submit"><input name="submit" type="submit" id="submit" class="submit" value="发表评论" /> <input type='hidden' name='comment_post_ID' value='1864' id='comment_post_ID' /> <input type='hidden' name='comment_parent' id='comment_parent' value='0' /> </p></form> </div><!-- #respond --> </div><!-- #comments --> </main><!-- #main --> </div><!-- #primary --> <div id="secondary" class="widget-area" role="complementary"> <aside id="text-4" class="widget widget_text"><h4 class="widget-title"><i class="fa fa-code" aria-hidden="true"></i> 请大家一定注意</h4> <div class="textwidget"><p><i class="fa fa-exclamation-circle" style="color: #e74c3c;" aria-hidden="true"><strong> 警示 </strong></i> 部分若干网站直接抄袭本站<a href="https://zuoyedaixie.net/aboutus/" target="_blank" rel="noopener noreferrer">大牛简介</a> 板块的个人简介内容和交易流程板块的<a href="https://zuoyedaixie.net/wp-content/uploads/2019/08/zuoyedaixieprocess.jpg" target="_blank" rel="noopener noreferrer">交易流程图</a>, 网站内容都抄袭,请大家提高警惕。本站所有图片均有zuoyedaixie.net和学霸cs的水印,请注意辨别真伪。</p> <p><i class="fa fa-coffee" style="color: #800000;" aria-hidden="true"><strong> 友情提示</strong> </i> 我们的<a title="Google search 学霸cs代写" href="https://www.google.com/search?q=zuoyedaixie.net" target="_blank" rel="noopener noreferrer">Google</a>排名是靠质量和口碑做起来的, 和带Ad标识的花钱排名不一样。学霸代写的排名从来不需要通过付钱刷存在感</p> <p><i class="fa fa-volume-up" style="color: #e74c3c;" aria-hidden="true"><strong> 特此声明 </strong> </i> 本站所有图片文字资料均系原创, 如有雷同, 均系抄袭本站, 特此声明!</p> </div> </aside><aside id="custom_html-3" class="widget_text widget widget_custom_html"><h4 class="widget-title"><i class="fa fa-code" aria-hidden="true"></i> Contact us</h4><div class="textwidget custom-html-widget"><p style="color: red;"><i class="fa fa-smile-o" aria-hidden="true" style="color: #E74C3C;"></i> Please feel free to contact us anytime</p><ul class="sliderbar-ul"><li><strong><i class="fa fa-envelope-o" aria-hidden="true" style="color: #800000;"></i> Email: </strong>zydaixie@126.com</li> <li><strong><i class="fa fa-weixin" aria-hidden="true" style="color: green;"></i> 微信号: </strong>nobugboy</li> <li style="color:red">按时高质量完成是我们坚守原则,老客户的口碑<a target="_blank" title="Google search 学霸cs代写" href="https://www.google.com/search?q=zuoyedaixie.net" rel="noopener noreferrer">google</a>排名靠前的制胜法宝,关注学霸朋友圈和官方<a target="_blank" title="Google search 学霸cs代写" href="https://twitter.com/xuebaCS" rel="noopener noreferrer">推特</a>有客户评价</li> </ul> <img title="微信联系我们-Computer Science留学生作业代写,CS作业代写, 程序代写,编程代写" src="/wp-content/uploads/2017/11/wechatlogo.jpg" alt="微信联系我们-Computer Science留学生作业代写,CS作业代写, 程序代写,编程代写" width="80%" height="auto" /> <p class="sliderbar-p">为了保证我们尽快评估您的题目,请注明您的作业具体要求、微信号和年级</p> <p class="sliderbar-p">Notice: 美东时间 11:00 AM - 17:00之间可能回复稍慢,望谅解</p></div></aside><aside id="categories-4" class="widget widget_categories"><h4 class="widget-title"><i class="fa fa-code" aria-hidden="true"></i> 搞定各类CS作业</h4> <ul> <li class="cat-item cat-item-77"><a href="https://zuoyedaixie.net/category/aizuoyedaixie/" title="AI作业代写 人工智能作业代写 人工智能代写 代写人工智能 代写AI">AI代写</a> </li> <li class="cat-item cat-item-4"><a href="https://zuoyedaixie.net/category/algorithmdaixie/" title="算法作业辅导 算法作业代写">Algorithm 算法作业</a> </li> <li class="cat-item cat-item-54"><a href="https://zuoyedaixie.net/category/assemblyzuoyedaixie/" title="汇编作业代写 汇编程序代写 汇编代写">Assembly 汇编作业</a> </li> <li class="cat-item cat-item-55"><a href="https://zuoyedaixie.net/category/czuoyedaixie/" title="C编程代写 C程序代写 c语言作业代写 c作业代写 c语言代写 C++编程代写 C++程序代写 c++作业代写 C++代写">C/C++ 编程代写</a> </li> <li class="cat-item cat-item-56"><a href="https://zuoyedaixie.net/category/c-zuoyedaixie/" title="C#编程代写 C#程序代写 C#作业代写 C#代写">C#编程代写</a> </li> <li class="cat-item cat-item-76"><a href="https://zuoyedaixie.net/category/assignmentzuoyedaixie/" title="assignment作业代写 代写assignment cs assignment作业代写 代写 cs assignment">CS assignment代写</a> </li> <li class="cat-item cat-item-57"><a href="https://zuoyedaixie.net/category/cszuoyedaixie/" title="代写计算机CS作业 Assignment CS Assignment代写">CS作业代写</a> </li> <li class="cat-item cat-item-58"><a href="https://zuoyedaixie.net/category/dataminingzuoyedaxie/" title="Data Mining数据挖掘作业代写 Data Mining作业代写 数据挖掘作业代写">Data Mining数据挖掘作业代写</a> </li> <li class="cat-item cat-item-60"><a href="https://zuoyedaixie.net/category/data-structure-assignment/" title="Data Structure assignment 作业代写 Data Structure作业代写 Data Structure程序代写 Data Structure代写 数据结构assignment作业代写 数据结构作业代写 数据结构程序代写 数据结构代写">Data Structure 代写</a> </li> <li class="cat-item cat-item-61"><a href="https://zuoyedaixie.net/category/databasezuoyedaixie/" title="Database 数据库作业代写 Database作业代写 数据库作业代写 数据库代写">Database 数据库作业代写</a> </li> <li class="cat-item cat-item-62"><a href="https://zuoyedaixie.net/category/eezuoyedaixie/" title="EE 作业代写">EE 作业代写</a> </li> <li class="cat-item cat-item-63"><a href="https://zuoyedaixie.net/category/cshomework/" title="HomeWork cs作业 各类cs作业 各类cs homework作业">HomeWork cs作业</a> </li> <li class="cat-item cat-item-64"><a href="https://zuoyedaixie.net/category/java/" title="Java程序代写 代写Java编程作业 代写Java程序作业 Java程序作业代写">Java 代写</a> </li> <li class="cat-item cat-item-132"><a href="https://zuoyedaixie.net/category/lab%e4%bb%a3%e5%86%99/" title="lab代写 代写lab">Lab代写</a> </li> <li class="cat-item cat-item-65"><a href="https://zuoyedaixie.net/category/linuxc/" title="Linux C/C++ 作业代写 C/C++作业代写">Linux C/C++ 作业代写</a> </li> <li class="cat-item cat-item-59"><a href="https://zuoyedaixie.net/category/machinelearningdaixie/" title="Machine Learning 机器学习作业代写 机器学习作业代写 Machine Learning作业代写">Machine Learning 机器学习作业代写</a> </li> <li class="cat-item cat-item-182"><a href="https://zuoyedaixie.net/category/math%e4%bb%a3%e5%86%99/" title="math代写 代做math 数学代写 代写数学">math代写</a> </li> <li class="cat-item cat-item-66"><a href="https://zuoyedaixie.net/category/multi-threading-daixie/" title="Multi-threading 多线程作业代写 代写多线程Multi-threading编程作业">Multi-threading 多线程作业代写</a> </li> <li class="cat-item cat-item-67"><a href="https://zuoyedaixie.net/category/networkzuoyedaixie/" title="Network 作业代写 网络程序代写 代写网络编程作业 socket TCP/IP 程序代写">Network 作业代写</a> </li> <li class="cat-item cat-item-181"><a href="https://zuoyedaixie.net/category/os%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f/" title="OS操作系统 操作系统代写 代做OS">OS操作系统</a> </li> <li class="cat-item cat-item-131"><a href="https://zuoyedaixie.net/category/project%e4%bb%a3%e5%86%99/" title="Project代写 代写Project">Project代写</a> </li> <li class="cat-item cat-item-68"><a href="https://zuoyedaixie.net/category/python/" title="Python程序代写 辅导Python编程代写 Assignment python作业代写">Python 作业代写</a> </li> <li class="cat-item cat-item-92"><a href="https://zuoyedaixie.net/category/r%e8%af%ad%e8%a8%80%e4%bb%a3%e5%86%99/" title="R语言代写 R代写">R语言代写</a> </li> <li class="cat-item cat-item-70"><a href="https://zuoyedaixie.net/category/webdaixie/" title="Web编程作业代写 代写Web程序 作业 php程序代写 nodejs程序代写 html5 代写 css代写 js代写">Web程序代做</a> </li> <li class="cat-item cat-item-71"><a href="https://zuoyedaixie.net/category/canadacsdaixie/" title="加拿大程序代写 Computer Science留学生作业代写 CS Assignment CS代写 程序代写 编程代写 代写cs 北美程序代写 加拿大cs代写 北美cs代写 ">加拿大程序代写</a> </li> <li class="cat-item cat-item-141"><a href="https://zuoyedaixie.net/category/singapore/" title="新加坡作业代写 新加坡代写 代写新加坡 新加坡程序代写">新加坡程序代写</a> </li> <li class="cat-item cat-item-72"><a href="https://zuoyedaixie.net/category/newzealandcsdaixie/" title="新西兰程序代写 新西兰cs代写 新西兰cs作业代写 代写新西兰cs作业 代写新西兰程序 代写新西兰cs 代写新西兰cs作业 CS Assignment">新西兰程序代写</a> </li> <li class="cat-item cat-item-73"><a href="https://zuoyedaixie.net/category/australiacsdaixie/" title="澳大利亚程序代写 澳大利亚程序代写 澳大利亚cs代写 CS Assignment 澳大利亚cs作业代写 代写澳大利亚cs作业 代写澳大利亚程序 代写澳大利亚cs 代写澳大利亚cs作业 ">澳大利亚程序代写</a> </li> <li class="cat-item cat-item-180"><a href="https://zuoyedaixie.net/category/%e7%a7%bb%e5%8a%a8app%e4%bb%a3%e5%81%9a/" title="移动app代做 移动app代写 安卓代写 ios代写 swift代写 android代写 app代做">移动app代做</a> </li> <li class="cat-item cat-item-69"><a href="https://zuoyedaixie.net/category/suanfazuoyedaixie/" title="算法作业代写 代写算法作业">算法作业代写</a> </li> <li class="cat-item cat-item-260"><a href="https://zuoyedaixie.net/category/%e7%bb%8f%e6%b5%8e%e4%bb%a3%e5%86%99/">经济代写</a> </li> <li class="cat-item cat-item-261"><a href="https://zuoyedaixie.net/category/%e7%bb%9f%e8%ae%a1%e4%bb%a3%e5%86%99/">统计代写</a> </li> <li class="cat-item cat-item-183"><a href="https://zuoyedaixie.net/category/security/" title="网络安全代做 代写网络安全 security bomb拆除 ">网络安全</a> </li> <li class="cat-item cat-item-74"><a href="https://zuoyedaixie.net/category/americancsdaixie/" title="美国程序代写 CS Assignment CS代写 程序代写 编程代写 代写cs 北美程序代写 美国cs作业代写 北美cs代写">美国程序代写</a> </li> <li class="cat-item cat-item-75"><a href="https://zuoyedaixie.net/category/ukcsdaixie/" title="英国程序代写 英国cs代写 英国cs作业代写 CS Assignment 代写英国cs作业 代写英国程序 代写英国cs 代写英国cs作业 ">英国程序代写</a> </li> <li class="cat-item cat-item-143"><a href="https://zuoyedaixie.net/category/hongkongdaixie/" title="香港程序代写 香港作业代写 香港CS代写 香港CS作业 代写香港CS ">香港程序代写</a> </li> </ul> </aside> <aside id="recent-posts-4" class="widget widget_recent_entries"> <h4 class="widget-title"><i class="fa fa-code" aria-hidden="true"></i> 最近完成的项目</h4> <ul> <li> <a href="https://zuoyedaixie.net/%e4%bb%a3%e5%81%9aproject-assignment-computer-assignment-2/">代做project | assignment – Computer Assignment 2</a> </li> <li> <a href="https://zuoyedaixie.net/homework-algorithm-assignment%e4%bb%a3%e5%86%99-math%e4%bb%a3%e5%86%99-algorithm/">homework | Algorithm | assignment代写 | math代写 – Algorithm</a> </li> <li> <a href="https://zuoyedaixie.net/%e4%bd%9c%e4%b8%9aalgorithm-quiz-quiz-4-gradient-descent/">作业Algorithm | quiz – Quiz 4 : Gradient Descent</a> </li> <li> <a href="https://zuoyedaixie.net/algorithm-oop-title/">Algorithm | oop – CS5800 Algorithms</a> </li> <li> <a href="https://zuoyedaixie.net/report-algorithm-%e4%bb%a3%e5%86%99shell-operating-systems-comp-3000-operating-systems-fall-2019-midterm-exam-solutions/">report | Algorithm | 代写shell | Operating Systems – COMP 3000: Operating Systems Fall 2019 Midterm Exam Solutions</a> </li> <li> <a href="https://zuoyedaixie.net/neural-networks%e4%bb%a3%e5%81%9a-security%e4%bb%a3%e5%81%9a-network-android-arm%e4%bd%9c%e4%b8%9a-%e4%bb%a3%e5%81%9anetwork-algorithm-bash%e4%bb%a3%e5%81%9a-app%e4%bb%a3%e5%86%99-sh/">Neural Networks代做 | security代做 | Network | Android | arm作业 | 代做network | Algorithm | bash代做 | app代写 | shell代做 | Machine learning代写 | 代做project | AI – Neural Networks</a> </li> <li> <a href="https://zuoyedaixie.net/web-%e4%bd%9c%e4%b8%9ahtml-assignment-3-deduplication/">web | 作业html – Assignment 3: Deduplication</a> </li> <li> <a href="https://zuoyedaixie.net/%e4%bd%9c%e4%b8%9anetwork-network%e4%bb%a3%e5%86%99-%e4%bb%a3%e5%81%9aalgorithm-%e4%bb%a3%e5%86%99project-%e4%bb%a3%e5%81%9aassignment-ai%e4%bb%a3%e5%86%99-randomized-optimization/">作业Network | network代写 | 代做Algorithm | 代写project | 代做assignment | ai代写 – Randomized Optimization</a> </li> <li> <a href="https://zuoyedaixie.net/financial-mathematics-%e9%87%91%e8%9e%8d%e4%bb%a3%e5%86%99-math%e4%bb%a3%e5%86%99-essay%e4%bb%a3%e5%86%99-%e4%bd%9c%e4%b8%9aunity-%e4%bb%a3%e5%86%99assignment-ios-it%e4%bb%a3%e5%86%99/">FINANCIAL MATHEMATICS | 金融代写 | math代写 | essay代写 | 作业unity | 代写assignment | ios | IT代写 – FINANCIAL MATHEMATICS</a> </li> <li> <a href="https://zuoyedaixie.net/econ%e4%bb%a3%e5%86%99-%e5%be%ae%e8%a7%82%e4%bb%a3%e5%86%99-microeconomics-%e4%bb%a3%e5%86%99-economics-100c-microeconomics-c/">econ代写 | 微观代写 | Microeconomics 代写 – Economics 100C: Microeconomics C</a> </li> </ul> </aside><aside id="tag_cloud-3" class="widget widget_tag_cloud"><h4 class="widget-title"><i class="fa fa-code" aria-hidden="true"></i> Tags</h4><div class="tagcloud"><a href="https://zuoyedaixie.net/tag/ai%e4%bb%a3%e5%86%99/" class="tag-cloud-link tag-link-101 tag-link-position-1" style="font-size: 9.68pt;" aria-label="AI代写 (174个项目)">AI代写</a> <a href="https://zuoyedaixie.net/tag/cplusdaixie/" class="tag-cloud-link tag-link-44 tag-link-position-2" style="font-size: 9.8666666666667pt;" aria-label="c++代写 (175个项目)">c++代写</a> <a href="https://zuoyedaixie.net/tag/cplus/" class="tag-cloud-link tag-link-6 tag-link-position-3" style="font-size: 9.4933333333333pt;" aria-label="c++代码代写 (170个项目)">c++代码代写</a> <a href="https://zuoyedaixie.net/tag/c-plus-zuoyedaixie/" class="tag-cloud-link tag-link-7 tag-link-position-4" style="font-size: 9.4933333333333pt;" aria-label="c++作业代写 (169个项目)">c++作业代写</a> <a href="https://zuoyedaixie.net/tag/c-program-daixie/" class="tag-cloud-link tag-link-9 tag-link-position-5" style="font-size: 9.4933333333333pt;" aria-label="c++程序代写 (167个项目)">c++程序代写</a> <a href="https://zuoyedaixie.net/tag/code-daixie/" class="tag-cloud-link tag-link-11 tag-link-position-6" style="font-size: 18.08pt;" aria-label="code代写 (489个项目)">code代写</a> <a href="https://zuoyedaixie.net/tag/cs-assignment-zuoyedaixie/" class="tag-cloud-link tag-link-17 tag-link-position-7" style="font-size: 21.253333333333pt;" aria-label="CS Assignment (716个项目)">CS Assignment</a> <a href="https://zuoyedaixie.net/tag/cs%e4%bb%a3%e5%86%99/" class="tag-cloud-link tag-link-106 tag-link-position-8" style="font-size: 21.066666666667pt;" aria-label="CS代写 (705个项目)">CS代写</a> <a href="https://zuoyedaixie.net/tag/cs%e7%bc%96%e7%a8%8b%e4%bb%a3%e5%86%99/" class="tag-cloud-link tag-link-112 tag-link-position-9" style="font-size: 18.453333333333pt;" aria-label="CS编程代写 (510个项目)">CS编程代写</a> <a href="https://zuoyedaixie.net/tag/essay/" class="tag-cloud-link tag-link-190 tag-link-position-10" style="font-size: 10.986666666667pt;" aria-label="essay代写 (201个项目)">essay代写</a> <a href="https://zuoyedaixie.net/tag/html5%e4%bb%a3%e5%86%99/" class="tag-cloud-link tag-link-86 tag-link-position-11" style="font-size: 9.12pt;" aria-label="html5代写 (161个项目)">html5代写</a> <a href="https://zuoyedaixie.net/tag/html%e4%bb%a3%e5%86%99/" class="tag-cloud-link tag-link-87 tag-link-position-12" style="font-size: 9.3066666666667pt;" aria-label="html代写 (166个项目)">html代写</a> <a href="https://zuoyedaixie.net/tag/it/" class="tag-cloud-link tag-link-18 tag-link-position-13" style="font-size: 8pt;" aria-label="IT (141个项目)">IT</a> <a href="https://zuoyedaixie.net/tag/it-zuoyedaixie/" class="tag-cloud-link tag-link-20 tag-link-position-14" style="font-size: 9.4933333333333pt;" aria-label="IT作业代写 (168个项目)">IT作业代写</a> <a href="https://zuoyedaixie.net/tag/java/" class="tag-cloud-link tag-link-21 tag-link-position-15" style="font-size: 11.733333333333pt;" aria-label="java (225个项目)">java</a> <a href="https://zuoyedaixie.net/tag/java-code-daixie/" class="tag-cloud-link tag-link-23 tag-link-position-16" style="font-size: 11.92pt;" aria-label="java code代写 (228个项目)">java code代写</a> <a href="https://zuoyedaixie.net/tag/javadaixie/" class="tag-cloud-link tag-link-22 tag-link-position-17" style="font-size: 11.733333333333pt;" aria-label="java代写 (224个项目)">java代写</a> <a href="https://zuoyedaixie.net/tag/javazuoyedaixie/" class="tag-cloud-link tag-link-25 tag-link-position-18" style="font-size: 11.733333333333pt;" aria-label="java作业代写 (224个项目)">java作业代写</a> <a href="https://zuoyedaixie.net/tag/javachengxudaixie/" class="tag-cloud-link tag-link-24 tag-link-position-19" style="font-size: 11.92pt;" aria-label="java程序 (227个项目)">java程序</a> <a href="https://zuoyedaixie.net/tag/js%e4%bb%a3%e5%86%99/" class="tag-cloud-link tag-link-85 tag-link-position-20" style="font-size: 8.3733333333333pt;" aria-label="js代写 (146个项目)">js代写</a> <a href="https://zuoyedaixie.net/tag/oop%e4%bb%a3%e5%86%99/" class="tag-cloud-link tag-link-115 tag-link-position-21" style="font-size: 10.426666666667pt;" aria-label="OOP代写 (189个项目)">OOP代写</a> <a href="https://zuoyedaixie.net/tag/os%e4%bb%a3%e5%86%99/" class="tag-cloud-link tag-link-116 tag-link-position-22" style="font-size: 10.053333333333pt;" aria-label="OS代写 (179个项目)">OS代写</a> <a href="https://zuoyedaixie.net/tag/project/" class="tag-cloud-link tag-link-153 tag-link-position-23" style="font-size: 11.36pt;" aria-label="project (213个项目)">project</a> <a href="https://zuoyedaixie.net/tag/python/" class="tag-cloud-link tag-link-26 tag-link-position-24" style="font-size: 9.68pt;" aria-label="python (172个项目)">python</a> <a href="https://zuoyedaixie.net/tag/python-code-zuoyedaixie/" class="tag-cloud-link tag-link-28 tag-link-position-25" style="font-size: 9.8666666666667pt;" aria-label="python code代写 (178个项目)">python code代写</a> <a href="https://zuoyedaixie.net/tag/pythondaixie/" class="tag-cloud-link tag-link-27 tag-link-position-26" style="font-size: 12.853333333333pt;" aria-label="python代写 (256个项目)">python代写</a> <a href="https://zuoyedaixie.net/tag/pythonzuoyedaixie/" class="tag-cloud-link tag-link-29 tag-link-position-27" style="font-size: 9.12pt;" aria-label="python作业代写 (162个项目)">python作业代写</a> <a href="https://zuoyedaixie.net/tag/pythonchengxudaixie/" class="tag-cloud-link tag-link-30 tag-link-position-28" style="font-size: 9.4933333333333pt;" aria-label="python程序 (167个项目)">python程序</a> <a href="https://zuoyedaixie.net/tag/report%e4%bb%a3%e5%86%99/" class="tag-cloud-link tag-link-146 tag-link-position-29" style="font-size: 10.8pt;" aria-label="report代写 (200个项目)">report代写</a> <a href="https://zuoyedaixie.net/tag/web/" class="tag-cloud-link tag-link-48 tag-link-position-30" style="font-size: 11.733333333333pt;" aria-label="web (222个项目)">web</a> <a href="https://zuoyedaixie.net/tag/webzuoyedaixie/" class="tag-cloud-link tag-link-49 tag-link-position-31" style="font-size: 11.733333333333pt;" aria-label="web作业代写 (224个项目)">web作业代写</a> <a href="https://zuoyedaixie.net/tag/webchengxudaixie/" class="tag-cloud-link tag-link-50 tag-link-position-32" style="font-size: 11.733333333333pt;" aria-label="web程序代写 (221个项目)">web程序代写</a> <a href="https://zuoyedaixie.net/tag/daixiecode/" class="tag-cloud-link tag-link-40 tag-link-position-33" style="font-size: 21.813333333333pt;" aria-label="代写code (772个项目)">代写code</a> <a href="https://zuoyedaixie.net/tag/daixiecszuoye/" class="tag-cloud-link tag-link-41 tag-link-position-34" style="font-size: 22pt;" aria-label="代写CS作业 (789个项目)">代写CS作业</a> <a href="https://zuoyedaixie.net/tag/%e5%8c%97%e7%be%8e%e4%bb%a3%e5%86%99/" class="tag-cloud-link tag-link-156 tag-link-position-35" style="font-size: 10.8pt;" aria-label="北美代写 (198个项目)">北美代写</a> <a href="https://zuoyedaixie.net/tag/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f/" class="tag-cloud-link tag-link-117 tag-link-position-36" style="font-size: 9.68pt;" aria-label="操作系统 (172个项目)">操作系统</a> <a href="https://zuoyedaixie.net/tag/%e6%be%b3%e6%b4%b2%e4%bb%a3%e5%86%99/" class="tag-cloud-link tag-link-157 tag-link-position-37" style="font-size: 10.24pt;" aria-label="澳洲代写 (187个项目)">澳洲代写</a> <a href="https://zuoyedaixie.net/tag/liuxueshengdaixiechengxu/" class="tag-cloud-link tag-link-35 tag-link-position-38" style="font-size: 21.813333333333pt;" aria-label="留学生程序代写 (778个项目)">留学生程序代写</a> <a href="https://zuoyedaixie.net/tag/chengxudaixie/" class="tag-cloud-link tag-link-37 tag-link-position-39" style="font-size: 21.066666666667pt;" aria-label="程序代写 (710个项目)">程序代写</a> <a href="https://zuoyedaixie.net/tag/%e7%ae%97%e6%b3%95/" class="tag-cloud-link tag-link-155 tag-link-position-40" style="font-size: 11.92pt;" aria-label="算法 (228个项目)">算法</a> <a href="https://zuoyedaixie.net/tag/%e7%ae%97%e6%b3%95%e4%bb%a3%e5%86%99/" class="tag-cloud-link tag-link-100 tag-link-position-41" style="font-size: 11.733333333333pt;" aria-label="算法代写 (222个项目)">算法代写</a> <a href="https://zuoyedaixie.net/tag/suanfazuoyedaixie/" class="tag-cloud-link tag-link-36 tag-link-position-42" style="font-size: 11.733333333333pt;" aria-label="算法作业代写 (222个项目)">算法作业代写</a> <a href="https://zuoyedaixie.net/tag/bianchengdaixie/" class="tag-cloud-link tag-link-38 tag-link-position-43" style="font-size: 20.88pt;" aria-label="编程代写 (683个项目)">编程代写</a> <a href="https://zuoyedaixie.net/tag/bianchengzuoyedaixie/" class="tag-cloud-link tag-link-43 tag-link-position-44" style="font-size: 21.253333333333pt;" aria-label="编程作业代写 (730个项目)">编程作业代写</a> <a href="https://zuoyedaixie.net/tag/jisuanjizuoyedaixie/" class="tag-cloud-link tag-link-39 tag-link-position-45" style="font-size: 20.693333333333pt;" aria-label="计算机作业代写 (681个项目)">计算机作业代写</a></div> </aside><aside id="archives-2" class="widget widget_archive"><h4 class="widget-title"><i class="fa fa-code" aria-hidden="true"></i> 一直都在帮助留学生(案例太多,折叠一下)</h4> <label class="screen-reader-text" for="archives-dropdown-2">一直都在帮助留学生(案例太多,折叠一下)</label> <select id="archives-dropdown-2" name="archive-dropdown"> <option value="">选择月份</option> <option value='https://zuoyedaixie.net/2024/03/'> 2024年三月  (10)</option> <option value='https://zuoyedaixie.net/2024/02/'> 2024年二月  (13)</option> <option value='https://zuoyedaixie.net/2024/01/'> 2024年一月  (15)</option> <option value='https://zuoyedaixie.net/2023/12/'> 2023年十二月  (15)</option> <option value='https://zuoyedaixie.net/2023/11/'> 2023年十一月  (15)</option> <option value='https://zuoyedaixie.net/2023/10/'> 2023年十月  (15)</option> <option value='https://zuoyedaixie.net/2023/09/'> 2023年九月  (14)</option> <option value='https://zuoyedaixie.net/2023/08/'> 2023年八月  (15)</option> <option value='https://zuoyedaixie.net/2023/07/'> 2023年七月  (16)</option> <option value='https://zuoyedaixie.net/2023/06/'> 2023年六月  (15)</option> <option value='https://zuoyedaixie.net/2023/05/'> 2023年五月  (15)</option> <option value='https://zuoyedaixie.net/2023/04/'> 2023年四月  (14)</option> <option value='https://zuoyedaixie.net/2023/03/'> 2023年三月  (15)</option> <option value='https://zuoyedaixie.net/2023/02/'> 2023年二月  (14)</option> <option value='https://zuoyedaixie.net/2023/01/'> 2023年一月  (16)</option> <option value='https://zuoyedaixie.net/2022/12/'> 2022年十二月  (13)</option> <option value='https://zuoyedaixie.net/2022/11/'> 2022年十一月  (14)</option> <option value='https://zuoyedaixie.net/2022/10/'> 2022年十月  (13)</option> <option value='https://zuoyedaixie.net/2022/09/'> 2022年九月  (15)</option> <option value='https://zuoyedaixie.net/2022/08/'> 2022年八月  (16)</option> <option value='https://zuoyedaixie.net/2022/07/'> 2022年七月  (14)</option> <option value='https://zuoyedaixie.net/2022/06/'> 2022年六月  (14)</option> <option value='https://zuoyedaixie.net/2022/05/'> 2022年五月  (15)</option> <option value='https://zuoyedaixie.net/2022/04/'> 2022年四月  (11)</option> <option value='https://zuoyedaixie.net/2022/03/'> 2022年三月  (13)</option> <option value='https://zuoyedaixie.net/2022/02/'> 2022年二月  (11)</option> <option value='https://zuoyedaixie.net/2022/01/'> 2022年一月  (14)</option> <option value='https://zuoyedaixie.net/2021/12/'> 2021年十二月  (15)</option> <option value='https://zuoyedaixie.net/2021/11/'> 2021年十一月  (15)</option> <option value='https://zuoyedaixie.net/2021/10/'> 2021年十月  (15)</option> <option value='https://zuoyedaixie.net/2021/09/'> 2021年九月  (15)</option> <option value='https://zuoyedaixie.net/2021/08/'> 2021年八月  (14)</option> <option value='https://zuoyedaixie.net/2021/07/'> 2021年七月  (15)</option> <option value='https://zuoyedaixie.net/2021/06/'> 2021年六月  (15)</option> <option value='https://zuoyedaixie.net/2021/05/'> 2021年五月  (15)</option> <option value='https://zuoyedaixie.net/2021/04/'> 2021年四月  (15)</option> <option value='https://zuoyedaixie.net/2021/03/'> 2021年三月  (16)</option> <option value='https://zuoyedaixie.net/2021/02/'> 2021年二月  (13)</option> <option value='https://zuoyedaixie.net/2021/01/'> 2021年一月  (13)</option> <option value='https://zuoyedaixie.net/2020/12/'> 2020年十二月  (15)</option> <option value='https://zuoyedaixie.net/2020/11/'> 2020年十一月  (14)</option> <option value='https://zuoyedaixie.net/2020/10/'> 2020年十月  (15)</option> <option value='https://zuoyedaixie.net/2020/09/'> 2020年九月  (15)</option> <option value='https://zuoyedaixie.net/2020/08/'> 2020年八月  (16)</option> <option value='https://zuoyedaixie.net/2020/07/'> 2020年七月  (15)</option> <option value='https://zuoyedaixie.net/2020/06/'> 2020年六月  (14)</option> <option value='https://zuoyedaixie.net/2020/05/'> 2020年五月  (16)</option> <option value='https://zuoyedaixie.net/2020/04/'> 2020年四月  (15)</option> <option value='https://zuoyedaixie.net/2020/03/'> 2020年三月  (14)</option> <option value='https://zuoyedaixie.net/2020/02/'> 2020年二月  (13)</option> <option value='https://zuoyedaixie.net/2020/01/'> 2020年一月  (14)</option> <option value='https://zuoyedaixie.net/2019/12/'> 2019年十二月  (13)</option> <option value='https://zuoyedaixie.net/2019/11/'> 2019年十一月  (14)</option> <option value='https://zuoyedaixie.net/2019/10/'> 2019年十月  (13)</option> <option value='https://zuoyedaixie.net/2019/09/'> 2019年九月  (15)</option> <option value='https://zuoyedaixie.net/2019/08/'> 2019年八月  (22)</option> <option value='https://zuoyedaixie.net/2019/07/'> 2019年七月  (12)</option> <option value='https://zuoyedaixie.net/2019/06/'> 2019年六月  (14)</option> <option value='https://zuoyedaixie.net/2019/05/'> 2019年五月  (17)</option> <option value='https://zuoyedaixie.net/2019/04/'> 2019年四月  (15)</option> <option value='https://zuoyedaixie.net/2019/03/'> 2019年三月  (16)</option> <option value='https://zuoyedaixie.net/2019/02/'> 2019年二月  (14)</option> <option value='https://zuoyedaixie.net/2019/01/'> 2019年一月  (16)</option> <option value='https://zuoyedaixie.net/2018/12/'> 2018年十二月  (16)</option> <option value='https://zuoyedaixie.net/2018/11/'> 2018年十一月  (15)</option> <option value='https://zuoyedaixie.net/2018/10/'> 2018年十月  (16)</option> <option value='https://zuoyedaixie.net/2018/09/'> 2018年九月  (16)</option> <option value='https://zuoyedaixie.net/2018/08/'> 2018年八月  (13)</option> <option value='https://zuoyedaixie.net/2018/07/'> 2018年七月  (16)</option> <option value='https://zuoyedaixie.net/2018/06/'> 2018年六月  (15)</option> <option value='https://zuoyedaixie.net/2018/05/'> 2018年五月  (16)</option> <option value='https://zuoyedaixie.net/2018/04/'> 2018年四月  (25)</option> <option value='https://zuoyedaixie.net/2018/03/'> 2018年三月  (29)</option> <option value='https://zuoyedaixie.net/2018/02/'> 2018年二月  (27)</option> <option value='https://zuoyedaixie.net/2018/01/'> 2018年一月  (10)</option> <option value='https://zuoyedaixie.net/2017/12/'> 2017年十二月  (28)</option> <option value='https://zuoyedaixie.net/2017/11/'> 2017年十一月  (23)</option> <option value='https://zuoyedaixie.net/2017/10/'> 2017年十月  (5)</option> <option value='https://zuoyedaixie.net/2017/09/'> 2017年九月  (3)</option> <option value='https://zuoyedaixie.net/2017/08/'> 2017年八月  (2)</option> <option value='https://zuoyedaixie.net/2017/07/'> 2017年七月  (2)</option> <option value='https://zuoyedaixie.net/2017/06/'> 2017年六月  (1)</option> <option value='https://zuoyedaixie.net/2017/05/'> 2017年五月  (3)</option> <option value='https://zuoyedaixie.net/2017/03/'> 2017年三月  (5)</option> <option value='https://zuoyedaixie.net/2017/02/'> 2017年二月  (5)</option> <option value='https://zuoyedaixie.net/2017/01/'> 2017年一月  (1)</option> <option value='https://zuoyedaixie.net/2016/12/'> 2016年十二月  (1)</option> </select> <script type="text/javascript"> /* <![CDATA[ */ (function() { var dropdown = document.getElementById( "archives-dropdown-2" ); function onSelectChange() { if ( dropdown.options[ dropdown.selectedIndex ].value !== '' ) { document.location.href = this.options[ this.selectedIndex ].value; } } dropdown.onchange = onSelectChange; })(); /* ]]> */ </script> </aside><aside id="custom_html-5" class="widget_text widget widget_custom_html"><h4 class="widget-title"><i class="fa fa-code" aria-hidden="true"></i> 社交网络</h4><div class="textwidget custom-html-widget"><a href="https://twitter.com/xuebaCS" target="_blank" title="学霸CS代写 - 顶级程序代写,CS代写, CS作业代写, CS代写, 程序代写, CS作业代写, 代码代写, CS编程代写, java代写, python代写, c++/c代写, R代写, 算法作业代写, web代写, CS assignment代写, 学霸推特,xuebaCS" rel="noopener noreferrer"><i class="fa fa-twitter-square fa-2x" aria-hidden="true"></i></a> <a href="https://www.facebook.com/" target="_blank" title="学霸CS代写 - 顶级程序代写,CS代写, CS作业代写, CS代写, 程序代写, CS作业代写, 代码代写, CS编程代写, java代写, python代写, c++/c代写, R代写, 算法作业代写, web代写, CS assignment代写, facebook" rel="noopener noreferrer"><i class="fa fa-facebook-official fa-2x" aria-hidden="true"></i></a> <a href="https://github.com" target="_blank" title="学霸CS代写 - 顶级程序代写,CS代写, CS作业代写, CS代写, 程序代写, CS作业代写, 代码代写, CS编程代写, java代写, python代写, c++/c代写, R代写, 算法作业代写, web代写, CS assignment代写, github ,github" rel="noopener noreferrer"><i class="fa fa-github-square fa-2x" aria-hidden="true"></i></a></div></aside><aside id="custom_html-6" class="widget_text widget widget_custom_html"><h4 class="widget-title"><i class="fa fa-code" aria-hidden="true"></i> 友情链接</h4><div class="textwidget custom-html-widget"><ul> <li><a target="_blank" href="https://www.google.com/search?q=zuoyedaixie.net" title="Google cs代写 cs作业代写 代写cs作业" rel="noopener noreferrer"><i class="fa fa-google" aria-hidden="true"></i> Google</a></li> <li><a target="_blank" href="https://wordpress.org/" title="Wordpress cs代写 cs作业代写 代写cs作业" rel="noopener noreferrer"><i class="fa fa-wordpress" aria-hidden="true"></i> Wordpress</a></li> <li><a target="_blank" href="https://zuoyedaixie.net/category/canadacsdaixie/?customize_changeset_uuid=34a06355-9f04-4d46-ab20-d7e0136c9b90&customize_messenger_channel=preview-0&customize_autosaved=on" title="加拿大程序代写 Computer Science留学生作业代写 CS Assignment CS代写 程序代写 编程代写 代写cs 北美程序代写 加拿大cs代写 北美cs代写 " rel="noopener noreferrer"><i class="fa fa-share-alt " aria-hidden="true"></i> 加拿大程序代写</a></li> <li><a target="_blank" href="https://zuoyedaixie.net/category/americancsdaixie/" title="美国程序代写 CS Assignment CS代写 程序代写 编程代写 代写cs 北美程序代写 美国cs作业代写 北美cs代写" rel="noopener noreferrer"><i class="fa fa-trophy" aria-hidden="true"></i> 北美作业君程序代写</a></li> <li><a target="_blank" href="https://zuoyedaixie.net/category/australiacsdaixie/" title="澳大利亚程序代写 澳大利亚程序代写 澳大利亚cs代写 CS Assignment 澳大利亚cs作业代写 代写澳大利亚cs作业 代写澳大利亚程序 代写澳大利亚cs 代写澳大利亚cs作业 " rel="noopener noreferrer"><i class="fa fa-envira" aria-hidden="true"></i> 澳大利亚TOP程序代写</a></li> <li><a target="_blank" href="https://zuoyedaixie.net/category/ukcsdaixie/" title="英国程序代写 英国cs代写 英国cs作业代写 CS Assignment 代写英国cs作业 代写英国程序 代写英国cs 代写英国cs作业 " rel="noopener noreferrer"><i class="fa fa-send-o" aria-hidden="true"></i> 英国CS程序代写</a></li> <li><a target="_blank" href="https://zuoyedaixie.net/category/hongkongdaixie/" title="香港程序代写 香港作业代写 香港CS代写 香港CS作业 代写香港CS " rel="noopener noreferrer"><i class="fa fa-tags" aria-hidden="true"></i> 香港程序代写</a></li> <li><a target="_blank" href="https://zuoyedaixie.net/category/singapore/" title="新加坡作业代写 新加坡代写 代写新加坡 新加坡程序代写" rel="noopener noreferrer"><i class="fa fa-fa" aria-hidden="true"></i> 新加坡程序代写</a></li> <li><a target="_blank" href="https://zuoyedaixie.net/category/newzealandcsdaixie/" title="新西兰程序代写 新西兰cs代写 新西兰cs作业代写 代写新西兰cs作业 代写新西兰程序 代写新西兰cs 代写新西兰cs作业 CS Assignment" rel="noopener noreferrer"><i class="fa fa-rocket" aria-hidden="true"></i> 新西兰程序代写</a></li> <li><a target="_blank" href="https://stackoverflow.com/" title="essay代写 stackoverflow_solver" rel="noopener noreferrer"><i class="fa fa-file-pdf-o" aria-hidden="true"></i> Stack Overflow</a></li> </ul></div></aside> </div><!-- #secondary --> </div><!-- #content --> <footer id="colophon" class="site-footer"> <div class="site-footer-inner"> <div class="footer-widget-area columns-3" style="color:white"> <div class="footer-widget"> <h3 style="color:white">学霸CS代写</h3> <p>资深代写专业团队,为您的学业保驾护航,因为专业,所以自信,值得信赖 ! <span id="siteseal"><script async type="text/javascript" src="https://seal.godaddy.com/getSeal?sealID=tfoWEh4sCshfPzbnzefnV81ViHyCLgs6gFoycyovfmRN9jndoWWtKtbM5J8v"></script></span></p> <small> <p>·【原创】+【高质量】+【诚信】是学霸CS代写坚守的原则, google排名靠前的制胜法宝</p> <p>·【口碑】先交付代码,帮助本机运行无误后再补交余款</p> <p>·【承诺】代码本地run不了,全额退款。 </p> <p>·【定价高?】尽管提出,合理范围内肯定能接受</p> </small> </div> <div class="footer-widget"> <h3 style="color:white">联系我们</h3> <p> <img title="微信联系我们-Computer Science留学生作业代写,CS作业代写, 程序代写,编程代写" src="/wp-content/uploads/2017/11/wechatlogo.jpg" width="40%" height="auto" alt="微信联系我们-Computer Science留学生作业代写,CS作业代写, 程序代写,编程代写" class="jetpack-lazy-image jetpack-lazy-image--handled" data-lazy-loaded="1" scale="0"><noscript><img title="微信联系我们-Computer Science留学生作业代写,CS作业代写, 程序代写,编程代写" src="/wp-content/uploads/2017/11/wechatlogo.jpg" width="40%" height="auto" alt="微信联系我们-Computer Science留学生作业代写,CS作业代写, 程序代写,编程代写"/></noscript> <br> <strong>微信: </strong> nobugboy <br> <strong>Email: </strong> zydaixie@126.com <br> <strong>Sitemap: </strong><a target="_blank" href="sitemap.xml" alt="cs代写 cs作业代写 sitemap">sitemap.xml</a></p> </div> <div class="footer-widget"> <a href="https://twitter.com/xuebaCS?ref_src=twsrc%5Etfw" class="twitter-follow-button" data-show-count="false">Follow @xuebaCS</a><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> </div> </div> <div class="site-info-wrapper"> <div class="site-info"> <div class="site-info-inner"> <div class="site-info-text"> Copyright © 2013-2023 学霸CS代写 | math代写 | 统计代写 | 金融代写 | 经济代写 | Computer Science留学生编程作业代写 - 留学生CS作业代写/留学生编程作业代写/留学生程序代写/CS代写/CS作业代写/CS程序代写/CS assignment代写 </div> </div><!-- .site-info-inner --> </div><!-- .site-info --> </div><!-- .site-info-wrapper --> </div><!-- .site-footer-inner --> </footer><!-- #colophon --> </div><!-- #page --> <script type='text/javascript' src='https://zuoyedaixie.net/wp-content/themes/primer/assets/js/navigation.min.js?ver=1.8.7'></script> <script type='text/javascript' src='https://zuoyedaixie.net/wp-includes/js/comment-reply.min.js?ver=5.4.15'></script> <script type='text/javascript' src='https://zuoyedaixie.net/wp-includes/js/wp-embed.min.js?ver=5.4.15'></script> <script> /* IE11 skip link focus fix */ /(trident|msie)/i.test(navigator.userAgent)&&document.getElementById&&window.addEventListener&&window.addEventListener("hashchange",function(){var t,e=location.hash.substring(1);/^[A-z0-9_-]+$/.test(e)&&(t=document.getElementById(e))&&(/^(?:a|select|input|button|textarea)$/i.test(t.tagName)||(t.tabIndex=-1),t.focus())},!1); </script> </body> </html>