程序代写代做代考 algorithm chain html C graph Search Engine

Search Engine
Homework #5
DATA 1050 Fall 2020
Due 23:59 EST,​ Wednesday, October 28, 2020
Optional: ​Coding Problem 3 Resubmission​ due by 23:59 EST, Monday, ​October 19, 2020
Setup & Submission
1. Use ​this​ GitHub Assignment Invitation ​Link: ​https://classroom.github.com/a/Vbl7I9d9
2. Run pytest pytest-timeout flake8 black nltk in a terminal to install all required
packages.
3. Push to master as much as you want before the homework deadline.
4. If your final push will be late, remember to use the ​Late Day Form *twice*, once before the deadline, and once
again after your final push.
5. When you are ready to submit, visit gradescope and submit your repo. Your report should be included in the repo
as ​report.md
6. Be sure to also Include a copy and paste of the test results and coverage information in coverage.md in each of
your stencil directories. Two students created a helpful ​utility script​ to do this for you.
7. For ​Coding Problem 3 Resubmission​, please ​only include​ the coding problems you want to be
re-graded in a stencil_CodingProblems3 subdirectory of your hw5 repo and submit the entire repo via the corresponding gradescope assignment “Coding Problems3 Resubmission”
Overview
Search engines retrieve a list of documents (typically web pages) that match a given query. Since multiple documents may satisfy the query, most search engines also attempt to list more relevant documents first. In this project, you will use the TF-IDF and PageRank algorithms to create part of a web search engine.
Operationally, each searchable document must be analyzed in advance (in a process called indexing) to gather and integrate statistics about its content. This data is used to form an index (like the one found at the end of a book) that allows user search queries to be performed in real-time without the need to revisit all of the original documents.
Document term count information is enough to perform simple query matching since it allows one to find all documents that contain a particular set of terms. It also allows one rank documents relative to one another based on their term frequencies. ​TF-IDF​, otherwise known as ​term frequency–inverse document frequency​, is one way to do this.
Web search engines use “spiders” to “crawl” to the web in order to automatically visit and index web pages. At each page, a count of the number of times each word (“term”) appears in a document is recorded (i.e, the term histogram is recorded), a list of outbound links (​outlinks​) is collected, and then the spider moves on.
When present, link information defines a document graph, which can be used for document ranking. For example, documents that are referred to many other documents may be more important than ones with very few incoming links (​inlinks​). Today, Google and most other web search engines use ​PageRank on link data to help determine web page performance.
​pip install –user ​
conda install

The PageRank algorithm was created by ​Larry Page and ​Sergey Brin (the founders of Google) while they were still graduate students at Stanford. While Page’s ​original technical report suggested using it to rank web page importance based on link information, it has since been used to analyze many other networks. Identifying social media influencers (based on follower networks), and gauging the importance of scientific papers (via citation networks) are two examples.
A Note on Vocabulary
In this project handout,
● A “​documen​t” refers to a Wikipedia page
● A “​term​” refers to a word (or alphanumeric sequence containing no white space)
Details
We used the Wikipedia ​download interface to download some of its web pages. These documents (web pages) are stored as XML records. In order to create your search engine, you will write code to process these XML files.
In the world of search and natural language processing, a collection of texts is called a ​corpus​. A ​corpus (plural ​corpora​) is a collection of written texts (web pages with links in this case). Thus the corpora you will be working with are subsets of the pages of the English-language Wikipedia.
This project has four main parts, which are described in detail in the sections below:
1. Calculating TF-IDF
2. Calculating PageRanks
3. Processing the XML files
4. Search Engine and user interface
Note: We suggest you implement your solution project in the sequence listed above. TF-IDF and PageRank are both somewhat math-heavy, and it is important you get them working with artificial data for which you are sure of the answers before you start processing real data. Specifically, this data will be used to create ​analytic test cases​, some of which we provide, and some of which you will provide. We encourage you to make git commits once a subcomponent is working. This makes it easier for you to revert to a previous version.
Proceeding in this order will also help the course staff know which parts of the problem you have completed if you have questions.
Stencil files provided:
● TFIDF.py, PageRank.py: ​Task: Implement of TF-IDF/PageRank algorithm.
● processing.py​: Task: index the Wikipedia corpus
● SearchEngine.py​: Task: Implement an API that takes search queries and returns search results ranked by the
chosen algorithm
● app.py: ​A simple command-line interface (CLI) we supply that will allow you to use your search engine for
interactively
● report.md​: Task: Write your report here
Datasets provided:
(note that all datasets have been zipped together into wiki_data.zip​. You’ll have to extract them into your stencil directory before you can proceed)
● MiniWiki.xml, SmallWiki.xml​: XML files with 2 and 107 Wikipedia articles respectively. As you work on adding functionary to your search engine, we suggest you start by testing with these!

● MedWiki.xml​: An XML containing 871 Wikipedia articles. You can try testing with this file once you get your code working with SmallWiki.
● PageWiki.xml​: An XML file containing 100 documents with titles 1 to 100. Each document contains nothing except for a link to document 100. You can use this file to test your implementation of PageRank. Document 100 should have a much higher PageRank than the other documents.
Using VSCode​
Jupyter notebooks are often used for visualization and analysis, and they work well for one-time coding tasks. In this project and more generally in DATA 1050, we will not be coding in Jupyter notebooks but rather, in Python files. To help with this we recommend you try using the ​Visual Studio Code Interactive Development Environment (IDE) with the Microsoft Python Development extension.
Please read the ​VS Code Instructions​ document to learn how to do the following:
1. How to start The VS Code IDE​ on data.jupyter.brown.edu
2. Install the Python Development Extension
3. Install and configure other helpful packages and extensions
4. Run the debugger
VS Code is an immensely powerful software development tool. Learning how to use its many features takes a long time. However, because it also provides integrated ​terminal window support, you can continue to use all of the command line based python development skills you already have.
Since this is the first time we have run VS Code, we will update the VS Code Instructions as needed. We suggest you add notifications for changes​ to the VS Code Instructions document.
Coding Style Requirements
Using a consistent coding style is a critical part of code quality. For this project, make your style consistent with ​PEP 8​, the style guide for python developers from Guido himself. There are many tools for checking if your code is styled correctly. You can periodically run ​flake8 *.py in a terminal under your code directory. You can also install a flake8 extension to give you PEP-8 style warning as you code. Either way, resolve all style warnings you see to avoid receiving point deductions.
An auto-formatting tool may also come in handy. From the terminal you can run black -l100 ​to automatically reformat your code (e.g., running black -l100 PageRank.py ​will reformat the code in your PageRank.py file.) Various VS Code extensions provide similar functionality and allow you to select regions of text that to reformat.
Part 5.1 TF-IDF
As the name suggests, TF-IDF has two parts: TF (​term frequency​) and IDF (​inverse document frequency)​ . TF-IDF allows us to capture the following two ideas:
● A term that appears many times within a document is likely to be more relevant to that document than a term that appears fewer times (this is captured by TF). we calculate the ​term frequency​ as
T F (term, doc) = # of times term appears in the document = P (term|doc) total # of terms in the document

● A term that occurs in fewer documents in the corpus is likely to be a better signal of relevance compared to a common term like “the”. (this is captured by IDF) A rare term often tells more about the document. The ​inverse document frequency ​of a term is defined as
IDF (term) = log( # of documents in the corpus ) # of documents in which the term appears
Please use ​natural log ​(which is what Python’s ​math.log ​does),
● TFIDF(term, doc) = TF(term, doc)×IDF(term)
Examples
Consider a document containing 100 terms wherein the term ​cat appears 3 times. The term frequency (i.e., tf) for cat is then (3 / 100) = 0.03. Now, assume we have 10 million documents and the term ​cat appears in one thousand of these. Then, the inverse document frequency (i.e., idf) is calculated as ln(10,000,000 / 1,000) = 9.210. Thus, the tf-idf weight for the term ​cat in this document is the product of these quantities: 0.03 * 9.210 = 0.2763.
You may also find a more sophisticated example ​here​. Complete the following tasks in​ TFIDF.py.
Task 5.1
● calc_term_frequency​: For each document and each term, calculate term frequency. Store the results in a dictionary that maps from each ​term to a secondary dict. The secondary dict maps document title ​doc to TF(term, doc)​. Indexing looks like this: [term][document that contains the term][frequency of that term in each document that contains it] Pay close attention to the docstring. ​See the provided function test_tfidf_basic for example inputs and outputs.
● calc_tf_idf: Iterate through the dictionary created for TF and multiply each term frequency by the term’s inverse document frequency. Note that the returned dictionary can also serve as a “reverse index,” (i.e., given a term, you can use a single dictionary lookup to get the documents that contain this term)
● search: Given a list of keywords, return a list of matching documents paired with their tf-idf scores. Each returned document should contain at least 1 of the keywords. The returned list should be sorted by document score. When a limit is specified, only return that many ​(doc, tf-idf-score) pairs (e.g., if limit = 10, you would only return the top 10 matches). Compute tf-idf score by summing the tf-idf values of each query word found in the document.
score(doc,keywords)= ∑ TFIDF(term, doc) term∈keywords
● Include your pytest compatible tests in ​TFIDF.py​.

Notes
● Read carefully through the docstring (prose, parameter description). The docstrings most precisely specify the behavior of each method.
● Use​ test_tfidf_basic​ as a starting point to help you understand the expected input and output.
● Some methods are labeled as @staticmethod​. This means they do not depend on instance or class data, notice they do not include a self variable. @staticmethods can be invoked without a class instance as illustrated in ​test_tfidf_basic​. Their output does not depend on instance or class variables (i.e. they are regular stateless functions). This is sometimes helpful because each method can be tested separately. (For interested readers, see ​here for a discussion on the difference between @classmethods (which can depend on class
variables) and @staticmethods.)
Report Q&A: Ordering and Logs
Hw5.1 ​Your boss has been reviewing your code and wants you to do the following:
“store word frequencies the way you compute”, i.e. s/he wants you to use a dict of dicts which is indexed via
{document:{word:word frequency}}
Think carefully about this suggestion and give an appropriate response.
Part 5.2 PageRank
So far we have scored documents based on their relevance to a given query only. This is how early search engines like AltaVista worked. But then, in the late 90s, the founders of Google came up with an idea for ranking documents based on their position in the web itself. Their PageRank algorithm gives an overall importance score and it pays no attention whatsoever to the documents’ content. Rather, the rankings it computes are based entirely on the link structure between documents: i.e., which documents link to one another and which documents link to it. Documents with high scores (i.e., high PageRanks) have links from other documents that also have high ranks (which are linked to other documents with high ranks). This is a kind of crazy circular idea, but when converted into the appropriate mathematics the algorithm works quite well.
There are many variants of the PageRank algorithm. In this project, we will implement one of the most basic. Key principles underlying the design of PageRank:
1. The more documents that link to a page, the more authoritative it should be.
○ For example, if my personal blog post on “Providence Internet Outages” is linked to by 5 different web
pages (5 different incoming links, aka 5 inlinks), and the Wikipedia document on “Providence, Rhode Island” is linked to by 1000s of web pages (1000s of inlinks), then it makes sense to consider the Wikipedia document more authoritative.
○ Many early search engines use incoming page counts, and at first, this worked well, but over time people realized they could promote a page by making many fake pages that pointed to it.
○ The PageRank innovation was to also consider the authority score of incoming pages. Authoritative pages should also be linked to by other authoritative pages.,
2. The ability of an authoritative page to promote other pages should be constrained by the total number of outgoing links it has, fewer links provide better references.
○ Assume “Research at Brown” is linked to by an ​NYTimes document which links to only 10 other pages, and my blog “About Me” page is linked to by “Rhode Island Technology Bloggers”, which links to 2000 other pages. Because the “NYTimes” page has only a few links, and “Rhode Island Blogger” has many links, a link from the “NYTimes” page lends a larger fraction of its importance than a link from the “Rhode

Island Technology Bloggers”, leading us to attribute more authority to “Research at Brown” than “About Me”
Let u be a document, Bu be the set of documents that have a link to u , L(u) be the number of outgoing edges from u . The ​PageRank​ score for document u is defined as
P ageRank(v) L(v)
The trouble with this equation is that it is circular; in order to calculate the weight of document u , we have to know the weights of all document linking to u . How do we begin calculating the document weights? In practice, we use an ​iterative approach and stop once the document weights have converged. Here is a suggested approach to implementing PageRank:
● Create a dict ​weights​. Initialize weights for all documents to 1/N​, where ​N is the number of documents in the corpus
● While maximum # of iterations not reached
P ageRank(u) = ∑ v∈B
u
Note​:


○ ○ ○
Create a dict ​new_weights ​with weights for all documents set to 0 Iterate through each document ​x​.
For each document ​y​ that document ​x​ links to, update
​new_weights[y] += weights[x] / (# of documents x links to)
Calculate L2-distance between ​weights ​and n​ ew_weights​. Break out of the loop if​ distance < eps * N Set​ weights = new_weights ● L2-distance is ​Euclidean distance ● If you sum up the PageRank value for each document in a corpus, you should get ​1. ● Links from a document to itself are ignored. ​Links to documents outside the corpus are ignored. You may need to filter such links. ● Documents that link to nothing (i.e. sinks, like B below) are considered linked (once) to all documents ​including itself. Therefore, each document receives​ (weight of this sink) / N​. ● Multiple links from one document to another are treated as a single link. Examples Let’s say that we have the corpus shown above, which consists of the documents (a.k.a. pages), A, B, ​and C. A links to ​B ​and ​C​, and ​C ​links to A. ​The table below shows the results of running the PageRank algorithm on this corpus in order to determine the weight (a.k.a. rank) of each document. Remember that since ​B does not link to anything, we treat it as if it links to every document ​including​ itself. Iteration Weight of A Weight of B Weight of C Formula B/3+C/1 A/2+B/3 A/2+B/3 Initial 1/3 = .333 1/3 = .333 1/3 = .333 1 .333 / 3 + .333 / 1= .444 .333 / 2 + .333 / 3 = .277 .333 / 2 + .333 / 3= .277 2 .277 / 3 + .277 / 1 = .370 .444 / 2 + .277 / 3 = .314 .444 / 2 + .277 / 3 = .314 3 .314 / 3 + .314 / 1 = .419 .370 / 2 + .314 / 3 = .290 .370 / 2 + .314 / 3 = .290 4 .290 / 3 + .290 / 1 = .386 .419 / 2 + .290 / 3 = .306 .419 / 2 + .209 / 3 = .306 Task 5.2 ● calc_page_rank​: Given links between the documents, calculate the PageRank values for each page as specified above. ● search​: Searches for documents containing at least one of the query words, sorted by PageRank values and return up to `​limit​` of them. ● Write unit tests for​ PageRank.py​. ● Use​ test_page_rank_basic​ as a starting point to h​ elp you understand the expected input and output​. ● Add file docstring and class ​docstring​ in​ PageRank.py​ and remove all TODOs. Report Q&A: Page Rank Understanding Hw5.2 ​There is a Markov Chain interpretation of the PageRank algorithm that PageRank value represents the frequency that web surfers arrive at a specific web page following hyperlinks found on other pages. Included in the model is the idea that a user can also visit a page without clicking a link (e.g., they can visit via bookmark or a typed url). This random jumping process around process can be included in an iterative solution via a damping factor d​. Explainthefollowingequationintermsofprobabilitynotationif​PR(X)istheprobabilityofarrivingatnode​X​,and​L(X) is the number of outbound links from ​X​. (i.e., What does ​d represent, what does ​(1 - d)/N represent, and what does the sum represent.) If 32% of traffic to a webpage comes from non-inlink sources what should the value of d be? See ​https://en.wikipedia.org/wiki/PageRank​ if you are stuck. Part 5.3 Processing the XML file Tf-idf computes word counts. In order to do this, irrelevant data (like punctuation and word spelling variations) must be removed. Tf-idf calculation is then done with respect to this simplified corpus. PageRank requires all the links in the corpus. It is now time to process the Wikipedia dump XML to extract each type of data. Introduction to XML files The Wikipedia corpora used for this project are stored as ​XML files​. ​XML stands for eXtensible Markup Language. It is similar to HTML in that elements are surrounded by matching opening and closing tags. An opening tag looks like ​. The corresponding closing tag includes a slash, so it looks like ​<\title>​.<br /> Open SmallWiki.xml in a text editor and get familiar with the structure of XML files.<br /> Task 5.3.1 Processing Text<br /> You should work with​ process_text​ in​ processing.py​. ● Tokenizing<br /> Tokenization refers to the process of splitting a string into tokens. For our purposes, ​tokens are ​sequences of characters with no punctuation or whitespace​. See the docstring for more guidance.<br /> Ex: `Are you there?` should become `Are`, `you`, `there`<br /> ● Stop Words<br /> After tokenizing, you will need to remove stop words. ​Stop words are words that appear too often to be meaningful for searching (e.g. “the”, “of”). In building a search engine, it makes sense to discard stop words. Say you search ​the cat in the hat​, the shorter query ​cat hat gets at the essence of the longer query. The Python Natural Language Toolkit NLTK package​ includes a list of typical English stopwords that you should filter out.<br /> ● Stemming<br /> The next issue to overcome when building a search engine is we want to calculate a count for the ​stem of each word in each document as opposed to each of its variants. ​walking​, ​walked​, and ​walks all essentially mean the same thing, so we should reduce all of them down to ​walk​. This is what stemming accomplishes. In the stencil code, we instance a PorterStemmer​ for you. Note that its ​stem()​method also lowercases all letters, which is desirable behavior.<br /> Here is a ​suggested approach ​for the three steps mentioned above.<br /> 1. Use sent_tokenize and word_tokenize from nltk.tokenize for tokenizing. If the first execution of these methods gives you an error, follow the printed instructions and fix it. Here are some ​examples​.<br /> 2. Strip punctuations at both ends of each word,​ str.strip​ might be useful.<br /> 3. Stem words with the `stemmer` above.</p> <p> 4. Filter stop words and empty words. We’ve created a set of stopwords for you using the NLTK toolkit in the _english_stop_words please filter using this variable. Doing so will let you (and us) test out different sets of stop words.<br /> Use​ test_processing_basic​ as a starting point to ​help you understand the expected input and output​. Task 5.3.2 Processing Links<br /> The​ extract_links​ method is used for this part.<br /> In the XML files you will be working with, links can take the following two forms:<br /> 1. [[Impeached Presidents]]​: This is a normal link. ​Impeached Presidents is the text displayed on the page, and if you click on it, you are directed to the ​Impeached Presidents​ Wikipedia page.<br /> 2. [[Washington|Presidents]]​: The text that come before the ​| character is the text displayed on the page (we will call this “display text”), but the page that is linked to is the text that comes after the ​|​. In this case we would see ​Washington d​ isplayed on the page, but when we click on it, we would be redirected to the ​Presidents Wikipedia page.<br /> ○ Note: When calculating TF-IDF, ​Washington should be considered as a word on the page, but Presidents​ should not.<br /> ○ Note: If a link contains more than one ​| ​(e.g. ​[[File:Essendon logo 2010.png|center|150px]]​), then ​do not treat it as a link​. The words should also ​not ​be counted as words on the page.<br /> To isolate links that appear in the text, it is helpful to use a regex (​regular expression)​ . The Python package that provides regex functionality is called ​re​, which has been imported at the top of the stencil code.<br /> Here is a useful regex: ​r’\[\[[^\[]+?\]\]’<br /> ● Meaning: Match two left brackets (​\[\[​) and two right brackets (​\]\]​), making sure there’s something in the middle, but also making sure there is not a left bracket in the middle, which would mean that somehow another link was starting inside this link (​[ˆ[]+?​).<br /> If you want to play around with regex functions, take a look at ​this page Feel free to take a look at the ​documentation​ for more information!<br /> The code has been given to you in this part so no coding is required for this part, however, we expect you to fully understand it.<br /> Report Q&A: extract_links<br /> Hw5.3 ​In ​report.md​, explain how extract_links operates and what it returns. ​In addition, What would be different if we don’t return the second return value (words extracted from display texts)?<br /> Task 5.3.3 Working with XML files in Python<br /> You should work with​ build_corpus​ ​in this part.<br /> You will notice that at the top of processing.py​, there is a line that says ​from xml.etree import ElementTree​. This is a Python package that makes it easy to work with XML files. Take a look at the ​documentation to learn how to use this package.</p> <p> You should iterate through all the <page> nodes in the given XML file. We are interested in the <title> and ​<text> of each page. Methods you may find useful are root.iter and node.find()​. ​Apply ​process_text and extract_links on the text (or the text concatenated with the title and the display text from links). The first return value is a corpus(a list, each item is a tuple of document title and processed text) used as the input to TF-IDF. The second return value is the links that will be used as input to PageRank.<br /> Use​ test_processing_basic ​as a starting point to ​help you understand the expected input and output​. Part 5.4 SearchEngine: Optimizing Search Results<br /> class SearchEngine​ (located in​ SearchEngine.py​) allows users to query the corpus with various ranking schemes. Command Line Interface (CLI)<br /> Once you have implemented enough SearchEngine functionality you run python app.py to start ​an interactive command-line interface for your search engine (your result will not necessarily match this screenshot). The commands for use will be displayed when you run it. (The TAs will also use the CLI to evaluate your implementation as part of the grading process).<br /> Tasks<br /> ● Read through​ __init__​ and​ search​. Make sure you understand them.<br /> ● Implement the ‘smart’ search mode in smart_search. You should take both TF-IDF and PageRank into<br /> account. This is where you can get creative!<br /> Keep track of how you develop your smart search. You will need to explain your approach to implementing the ‘smart’ search mode in ​report.md​. You will also ​include 2 sample searches you performed (and their results) that demonstrate that your approach returns reasonable results. In addition, include a screenshot in that section of the report of you using the CLI to query your smart engine.<br /> ● Add file, class and method ​docstring​ in​ SearchEngine.py​ and remove all TODOs.<br /> ● Be sure that the Command Line Interface (described below) is working for you, since it will be used to also grade<br /> your project.<br /> Report Q&A: process_test<br /> Hw5.4 ​In​ report.md,​ explain why​ process_text​ is also applied on the query string. Report Q&A: Incremental Updates<br /> Hw5.5 ​In ​report.md​, Web spiders continuously find new web pages and revisit old web pages. When a new page is added or an old page is revisited an incremental update to the TF-IDF and PageRank must be made. Explain how you might implement an incremental SearchEngine update() method.<br /> Testing<br /> Thoroughly testing your project should involve a combination of ​unit testing and ​integration ​testing​. Use the type of testing that fits the situation. Include tests that confirm the calculations computed by your search engine are correct and that the other important pieces are functioning as you expect. Once you have a working search engine, also verify that search results are reasonable. You should test various queries, keeping in mind that your search engine should handle all inputs gracefully. We encourage you to create your own XML files for testing.</p> <p> You will only receive credit for testing which is clearly documented in your report. Test coverage is not the only goal (but you should still check coverage). Tell us about why we should be confident that your code survives any user inputs / corpus.<br /> Report<br /> Write your project report in the file called​ ​report.md​. Include the following under each section heading: # Search Engine Report<br /> ## Overview<br /> Overview of how your code works<br /> ## Known Bugs<br /> Description and example inputs and outputs for any known bugs.<br /> ## Report Questions & Answers<br /> Hw5.1 ​Respond to your boss’s suggestions to “store word frequencies the way you compute”. (See original question above for more detail.)<br /> Hw5.2 ​Explain the following equation in terms of probability notation if PR(X) is the probability of arriving at node X, and L(X) is the number of outbound links from X. (i.e., What does ​d represent, what does ​(1 – d)/N represent and, what does the sum represents.)<br /> If 32% of traffic to a webpage comes from non-inlink sources what should the value of d be?<br /> Hw5.3 ​Explain how extract_links ​operates and what it returns. In addition, What would be different if we don’t return the second return value (words extracted from display texts)?<br /> Hw5.4 ​Explain why​ process_text​ is also applied to query strings.<br /> Hw5.5 ​Web spiders continuously find new web pages and revisit old web pages. When a new page is added or an old page is revisited an incremental update to the TF-IDF and PageRank must be made. Explain how you might implement an incremental ​SearchEngine​ update() method.<br /> ## Smart Search<br /> Description of how you implemented the ‘smart’ search mode. Include at least two examples that show that it makes sense, and explains why it can potentially be better than just PageRank or TF-IDF.<br /> ## Testing<br /> Description of how you tested your code, include details on what you did beyond running the basic tests included with the stencil.</p> <p> Include screenshot from using CLI.<br /> Rubric<br /> ● Coding Style: 5%<br /> ○ Coding style is a critical part of code quality. Run ​flake8 *.py in a terminal under your code directory.<br /> Resolve all style warnings to avoid point deduction.<br /> ● TF-IDF: 25%<br /> ● PageRank: 25%<br /> ● SearchEngine & CLI (with Smart Search): 15%<br /> ● Processing XML file: 10%<br /> ● Report: 10%<br /> ● Testing: 10%<br /> Special<br /> thanks to CS18 for letting us borrow from their course materials.</p> </div><!-- .entry-content .clear --> </div> </article><!-- #post-## --> <nav class="navigation post-navigation" aria-label="Post navigation"> <span class="screen-reader-text">Post navigation</span> <div class="nav-links"><div class="nav-previous"><a title="CS代写 Project Management in IT" href="https://powcoder.com/2020/10/28/cs%e4%bb%a3%e5%86%99-project-management-in-it/" rel="prev"><span class="ast-left-arrow">←</span> Previous Post</a></div><div class="nav-next"><a title="程序代写代做代考 Susceptibility Weighted Imaging" href="https://powcoder.com/2020/10/28/%e7%a8%8b%e5%ba%8f%e4%bb%a3%e5%86%99%e4%bb%a3%e5%81%9a%e4%bb%a3%e8%80%83-susceptibility-weighted-imaging/" rel="next">Next Post <span class="ast-right-arrow">→</span></a></div></div> </nav><div class="ast-single-related-posts-container ast-container--fallback"><div class="ast-related-posts-title-section"> <h2 class="ast-related-posts-title"> Related Posts </h2> </div><div class="ast-related-posts-wrapper"> <article class="ast-related-post post-38 post type-post status-publish format-standard hentry category-uncategorized tag-matlab tag-simulation"> <div class="ast-related-posts-inner-section"> <div class="ast-related-post-content"> <div class="ast-related-post-featured-section ast-no-thumb"></div> <header class="entry-header related-entry-header"> <h3 class="ast-related-post-title entry-title"> <a href="https://powcoder.com/2016/06/21/matlab-simulation/" target="_self" rel="bookmark noopener noreferrer">matlab simulation</a> </h3> <div class="entry-meta ast-related-cat-style--none ast-related-tag-style--none"><span class="ast-taxonomy-container cat-links default"><a href="https://powcoder.com/category/uncategorized/" rel="category tag">程序代写 CS代考</a></span> / <span class="ast-taxonomy-container tags-links default"><a href="https://powcoder.com/tag/matlab/" rel="tag">matlab代写代考</a>, <a href="https://powcoder.com/tag/simulation/" rel="tag">simulation</a></span></div> </header> <div class="entry-content clear"> </div> </div> </div> </article> <article class="ast-related-post post-39 post type-post status-publish format-standard hentry category-uncategorized tag-c"> <div class="ast-related-posts-inner-section"> <div class="ast-related-post-content"> <div class="ast-related-post-featured-section ast-no-thumb"></div> <header class="entry-header related-entry-header"> <h3 class="ast-related-post-title entry-title"> <a href="https://powcoder.com/2016/06/21/ab202-assignment-1-arkapong/" target="_self" rel="bookmark noopener noreferrer">AB202 Assignment 1: Arkapong</a> </h3> <div class="entry-meta ast-related-cat-style--none ast-related-tag-style--none"><span class="ast-taxonomy-container cat-links default"><a href="https://powcoder.com/category/uncategorized/" rel="category tag">程序代写 CS代考</a></span> / <span class="ast-taxonomy-container tags-links default"><a href="https://powcoder.com/tag/c/" rel="tag">c++代做</a></span></div> </header> <div class="entry-content clear"> </div> </div> </div> </article> <article class="ast-related-post post-40 post type-post status-publish format-standard hentry category-uncategorized tag-c"> <div class="ast-related-posts-inner-section"> <div class="ast-related-post-content"> <div class="ast-related-post-featured-section ast-no-thumb"></div> <header class="entry-header related-entry-header"> <h3 class="ast-related-post-title entry-title"> <a href="https://powcoder.com/2016/06/21/msc-c-programming/" target="_self" rel="bookmark noopener noreferrer">MSc C++ Programming</a> </h3> <div class="entry-meta ast-related-cat-style--none ast-related-tag-style--none"><span class="ast-taxonomy-container cat-links default"><a href="https://powcoder.com/category/uncategorized/" rel="category tag">程序代写 CS代考</a></span> / <span class="ast-taxonomy-container tags-links default"><a href="https://powcoder.com/tag/c/" rel="tag">c++代做</a></span></div> </header> <div class="entry-content clear"> </div> </div> </div> </article> <article class="ast-related-post post-41 post type-post status-publish format-standard hentry category-uncategorized tag-prolog"> <div class="ast-related-posts-inner-section"> <div class="ast-related-post-content"> <div class="ast-related-post-featured-section ast-no-thumb"></div> <header class="entry-header related-entry-header"> <h3 class="ast-related-post-title entry-title"> <a href="https://powcoder.com/2016/06/21/msc-assessed-prolog-lab-exercise-2/" target="_self" rel="bookmark noopener noreferrer">MSc Assessed Prolog Lab Exercise 2</a> </h3> <div class="entry-meta ast-related-cat-style--none ast-related-tag-style--none"><span class="ast-taxonomy-container cat-links default"><a href="https://powcoder.com/category/uncategorized/" rel="category tag">程序代写 CS代考</a></span> / <span class="ast-taxonomy-container tags-links default"><a href="https://powcoder.com/tag/prolog/" rel="tag">Prolog代写代考</a></span></div> </header> <div class="entry-content clear"> </div> </div> </div> </article> <article class="ast-related-post post-49 post type-post status-publish format-standard hentry category-uncategorized tag-c tag-uml"> <div class="ast-related-posts-inner-section"> <div class="ast-related-post-content"> <div class="ast-related-post-featured-section ast-no-thumb"></div> <header class="entry-header related-entry-header"> <h3 class="ast-related-post-title entry-title"> <a href="https://powcoder.com/2016/06/21/spring-session2015assignment-1/" target="_self" rel="bookmark noopener noreferrer">Spring Session:2015:Assignment 1</a> </h3> <div class="entry-meta ast-related-cat-style--none ast-related-tag-style--none"><span class="ast-taxonomy-container cat-links default"><a href="https://powcoder.com/category/uncategorized/" rel="category tag">程序代写 CS代考</a></span> / <span class="ast-taxonomy-container tags-links default"><a href="https://powcoder.com/tag/c/" rel="tag">c++代做</a>, <a href="https://powcoder.com/tag/uml/" rel="tag">UML</a></span></div> </header> <div class="entry-content clear"> </div> </div> </div> </article> <article class="ast-related-post post-51 post type-post status-publish format-standard hentry category-uncategorized tag-uml"> <div class="ast-related-posts-inner-section"> <div class="ast-related-post-content"> <div class="ast-related-post-featured-section ast-no-thumb"></div> <header class="entry-header related-entry-header"> <h3 class="ast-related-post-title entry-title"> <a href="https://powcoder.com/2016/06/21/assignment-2-inception-and-elaboration/" target="_self" rel="bookmark noopener noreferrer">Assignment 2: "Inception and Elaboration"</a> </h3> <div class="entry-meta ast-related-cat-style--none ast-related-tag-style--none"><span class="ast-taxonomy-container cat-links default"><a href="https://powcoder.com/category/uncategorized/" rel="category tag">程序代写 CS代考</a></span> / <span class="ast-taxonomy-container tags-links default"><a href="https://powcoder.com/tag/uml/" rel="tag">UML</a></span></div> </header> <div class="entry-content clear"> </div> </div> </div> </article> <article class="ast-related-post post-55 post type-post status-publish format-standard hentry category-uncategorized tag-android tag-java"> <div class="ast-related-posts-inner-section"> <div class="ast-related-post-content"> <div class="ast-related-post-featured-section ast-no-thumb"></div> <header class="entry-header related-entry-header"> <h3 class="ast-related-post-title entry-title"> <a href="https://powcoder.com/2016/06/21/android-app/" target="_self" rel="bookmark noopener noreferrer">android app</a> </h3> <div class="entry-meta ast-related-cat-style--none ast-related-tag-style--none"><span class="ast-taxonomy-container cat-links default"><a href="https://powcoder.com/category/uncategorized/" rel="category tag">程序代写 CS代考</a></span> / <span class="ast-taxonomy-container tags-links default"><a href="https://powcoder.com/tag/android/" rel="tag">android</a>, <a href="https://powcoder.com/tag/java/" rel="tag">Java代写代考</a></span></div> </header> <div class="entry-content clear"> </div> </div> </div> </article> <article class="ast-related-post post-57 post type-post status-publish format-standard hentry category-uncategorized tag-java tag-junit"> <div class="ast-related-posts-inner-section"> <div class="ast-related-post-content"> <div class="ast-related-post-featured-section ast-no-thumb"></div> <header class="entry-header related-entry-header"> <h3 class="ast-related-post-title entry-title"> <a href="https://powcoder.com/2016/06/21/comp220-software-development-tools/" target="_self" rel="bookmark noopener noreferrer">COMP220: Software Development Tools</a> </h3> <div class="entry-meta ast-related-cat-style--none ast-related-tag-style--none"><span class="ast-taxonomy-container cat-links default"><a href="https://powcoder.com/category/uncategorized/" rel="category tag">程序代写 CS代考</a></span> / <span class="ast-taxonomy-container tags-links default"><a href="https://powcoder.com/tag/java/" rel="tag">Java代写代考</a>, <a href="https://powcoder.com/tag/junit/" rel="tag">junit</a></span></div> </header> <div class="entry-content clear"> </div> </div> </div> </article> </div> </div> </main><!-- #main --> </div><!-- #primary --> <div class="widget-area secondary" id="secondary" itemtype="https://schema.org/WPSideBar" itemscope="itemscope"> <div class="sidebar-main" > <aside id="custom_html-2" class="widget_text widget widget_custom_html"><h2 class="widget-title">Contact</h2><div class="textwidget custom-html-widget"><ul> <li><strong>QQ: 1823890830</strong></li> <li><strong>微信号(WeChat): powcoder</strong></li> <li><img data-recalc-dims="1" class="alignnone wp-image-366" src="https://i0.wp.com/powcoder.com/wp-content/uploads/2021/01/powcoder.jpg?resize=133%2C133&ssl=1" alt="myweixin" width="133" height="133"/></li> <li><strong>Email: <a href="mailto:powcoder@163.com">powcoder@163.com</a></strong></li> </ul> <ul> <li><strong>请加微信或QQ发要求</strong></li> <li><strong>Contact me through WeChat</strong></li> </ul> </div></aside><aside id="categories-2" class="widget widget_categories"><h2 class="widget-title">Categories</h2><nav aria-label="Categories"> <ul> <li class="cat-item cat-item-245"><a href="https://powcoder.com/category/machine-learning/">机器学习代写代考 machine learning</a> </li> <li class="cat-item cat-item-242"><a href="https://powcoder.com/category/database-db-sql/">数据库代写代考 DB Database SQL</a> </li> <li class="cat-item cat-item-244"><a href="https://powcoder.com/category/data-structure-algorithm/">数据结构算法代写代考 data structure algorithm</a> </li> <li class="cat-item cat-item-239"><a href="https://powcoder.com/category/%e4%ba%ba%e5%b7%a5%e6%99%ba%e8%83%bd-ai-artificial-intelligence/">人工智能 AI Artificial Intelligence</a> </li> <li class="cat-item cat-item-247"><a href="https://powcoder.com/category/compiler/">编译器原理 Compiler</a> </li> <li class="cat-item cat-item-254"><a href="https://powcoder.com/category/network-socket/">计算机网络 套接字编程 computer network socket programming</a> </li> <li class="cat-item cat-item-240"><a href="https://powcoder.com/category/hadoop-map-reduce-spark-hbase/">大数据 Hadoop Map Reduce Spark HBase</a> </li> <li class="cat-item cat-item-241"><a href="https://powcoder.com/category/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9fosoperating-system/">操作系统OS代写代考 (Operating System)</a> </li> <li class="cat-item cat-item-250"><a href="https://powcoder.com/category/computer-architecture/">计算机体系结构代写代考 Computer Architecture</a> </li> <li class="cat-item cat-item-251"><a href="https://powcoder.com/category/computer-graphics-opengl-webgl/">计算机图形学 Computer Graphics opengl webgl</a> </li> <li class="cat-item cat-item-249"><a href="https://powcoder.com/category/nlp/">自然语言处理 NLP natural language processing</a> </li> <li class="cat-item cat-item-383"><a href="https://powcoder.com/category/%e5%b9%b6%e8%a1%8c%e8%ae%a1%e7%ae%97/">并行计算</a> </li> <li class="cat-item cat-item-253"><a href="https://powcoder.com/category/computation-theory/">计算理论 Theory of Computation</a> </li> <li class="cat-item cat-item-252"><a href="https://powcoder.com/category/computer-security/">计算机安全密码学computer security cryptography</a> </li> <li class="cat-item cat-item-246"><a href="https://powcoder.com/category/sys-programming/">系统编程 System programming</a> </li> <li class="cat-item cat-item-367"><a href="https://powcoder.com/category/%e6%95%b0%e5%80%bc%e7%a7%91%e5%ad%a6%e8%ae%a1%e7%ae%97/">数值科学计算</a> </li> <li class="cat-item cat-item-255"><a href="https://powcoder.com/category/%e8%ae%a1%e7%ae%97%e6%9c%ba%e8%a7%86%e8%a7%89compute-vision/">计算机视觉代写代考(Compute Vision)</a> </li> <li class="cat-item cat-item-248"><a href="https://powcoder.com/category/web/">网页应用 Web Application</a> </li> <li class="cat-item cat-item-401"><a href="https://powcoder.com/category/%e5%88%86%e5%b8%83%e5%bc%8f%e7%b3%bb%e7%bb%9f/">分布式系统</a> </li> <li class="cat-item cat-item-640"><a href="https://powcoder.com/category/%e7%ac%94%e8%af%95%e9%9d%a2%e8%af%95/">笔试面试</a> </li> <li class="cat-item cat-item-403"><a href="https://powcoder.com/category/%e5%87%bd%e6%95%b0%e5%bc%8f%e7%bc%96%e7%a8%8b/">函数式编程</a> </li> <li class="cat-item cat-item-243"><a href="https://powcoder.com/category/%e6%95%b0%e6%8d%ae%e6%8c%96%e6%8e%98-data-mining/">数据挖掘 Data Mining</a> </li> <li class="cat-item cat-item-364"><a href="https://powcoder.com/category/%e7%a6%bb%e6%95%a3%e6%95%b0%e5%ad%a6/">离散数学代写代考 (Discrete mathematics)</a> </li> <li class="cat-item cat-item-384"><a href="https://powcoder.com/category/%e8%bd%af%e4%bb%b6%e5%b7%a5%e7%a8%8b/">软件工程</a> </li> <li class="cat-item cat-item-551"><a href="https://powcoder.com/category/%e7%bc%96%e7%a8%8b%e8%af%ad%e8%a8%80-programming-language/">编程语言 Programming Language</a> </li> <li class="cat-item cat-item-594"><a href="https://powcoder.com/category/%e7%bb%9f%e8%ae%a1%e4%bb%a3%e5%86%99%e4%bb%a3%e8%80%83/">统计代写代考</a> </li> <li class="cat-item cat-item-574"><a href="https://powcoder.com/category/%e8%bf%90%e7%ad%b9%e5%ad%a6-operation-research/">运筹学 Operation Research</a> </li> </ul> </nav></aside><aside id="tag_cloud-3" class="widget widget_tag_cloud"><h2 class="widget-title">Tag</h2><nav aria-label="Tag"><div class="tagcloud"><a href="https://powcoder.com/tag/algorithm/" class="tag-cloud-link tag-link-469 tag-link-position-1" style="font-size: 18px;" aria-label="Algorithm算法代写代考 (15,143 items)">Algorithm算法代写代考</a><a href="https://powcoder.com/tag/java/" class="tag-cloud-link tag-link-298 tag-link-position-2" style="font-size: 16.91156462585px;" aria-label="Java代写代考 (7,271 items)">Java代写代考</a><a href="https://powcoder.com/tag/database/" class="tag-cloud-link tag-link-414 tag-link-position-3" style="font-size: 16.503401360544px;" aria-label="database (5,442 items)">database</a><a href="https://powcoder.com/tag/data-structure/" class="tag-cloud-link tag-link-501 tag-link-position-4" style="font-size: 16.401360544218px;" aria-label="data structure (5,185 items)">data structure</a><a href="https://powcoder.com/tag/python/" class="tag-cloud-link tag-link-331 tag-link-position-5" style="font-size: 16.299319727891px;" aria-label="Python代写代考 (4,809 items)">Python代写代考</a><a href="https://powcoder.com/tag/compiler/" class="tag-cloud-link tag-link-472 tag-link-position-6" style="font-size: 16.027210884354px;" aria-label="compiler (4,000 items)">compiler</a><a href="https://powcoder.com/tag/scheme/" class="tag-cloud-link tag-link-338 tag-link-position-7" style="font-size: 15.823129251701px;" aria-label="Scheme代写代考 (3,502 items)">Scheme代写代考</a><a href="https://powcoder.com/tag/c-4/" class="tag-cloud-link tag-link-499 tag-link-position-8" style="font-size: 15.823129251701px;" aria-label="C语言代写 (3,489 items)">C语言代写</a><a href="https://powcoder.com/tag/ai/" class="tag-cloud-link tag-link-369 tag-link-position-9" style="font-size: 15.176870748299px;" aria-label="AI代写 (2,216 items)">AI代写</a><a href="https://powcoder.com/tag/c-3/" class="tag-cloud-link tag-link-491 tag-link-position-10" style="font-size: 14.700680272109px;" aria-label="c++代写 (1,633 items)">c++代写</a><a href="https://powcoder.com/tag/sql/" class="tag-cloud-link tag-link-395 tag-link-position-11" style="font-size: 14.530612244898px;" aria-label="SQL代写代考 (1,457 items)">SQL代写代考</a><a href="https://powcoder.com/tag/haskell/" class="tag-cloud-link tag-link-291 tag-link-position-12" style="font-size: 14.530612244898px;" aria-label="Haskell代写代考 (1,453 items)">Haskell代写代考</a><a href="https://powcoder.com/tag/javascript/" class="tag-cloud-link tag-link-299 tag-link-position-13" style="font-size: 14.462585034014px;" aria-label="javascript (1,395 items)">javascript</a><a href="https://powcoder.com/tag/concurrency/" class="tag-cloud-link tag-link-503 tag-link-position-14" style="font-size: 14.428571428571px;" aria-label="concurrency (1,355 items)">concurrency</a><a href="https://powcoder.com/tag/matlab/" class="tag-cloud-link tag-link-309 tag-link-position-15" style="font-size: 14.360544217687px;" aria-label="matlab代写代考 (1,281 items)">matlab代写代考</a><a href="https://powcoder.com/tag/finance/" class="tag-cloud-link tag-link-282 tag-link-position-16" style="font-size: 14.292517006803px;" aria-label="finance (1,221 items)">finance</a><a href="https://powcoder.com/tag/interpreter/" class="tag-cloud-link tag-link-297 tag-link-position-17" style="font-size: 14.190476190476px;" aria-label="interpreter (1,144 items)">interpreter</a><a href="https://powcoder.com/tag/mips/" class="tag-cloud-link tag-link-313 tag-link-position-18" style="font-size: 14.156462585034px;" aria-label="MIPS汇编代写代考 (1,134 items)">MIPS汇编代写代考</a><a href="https://powcoder.com/tag/data-mining/" class="tag-cloud-link tag-link-271 tag-link-position-19" style="font-size: 13.986394557823px;" aria-label="data mining (990 items)">data mining</a><a href="https://powcoder.com/tag/decision-tree/" class="tag-cloud-link tag-link-273 tag-link-position-20" style="font-size: 13.952380952381px;" aria-label="decision tree (982 items)">decision tree</a><a href="https://powcoder.com/tag/deep-learning/" class="tag-cloud-link tag-link-274 tag-link-position-21" style="font-size: 13.952380952381px;" aria-label="deep learning深度学习代写代考 (980 items)">deep learning深度学习代写代考</a><a href="https://powcoder.com/tag/prolog/" class="tag-cloud-link tag-link-329 tag-link-position-22" style="font-size: 13.918367346939px;" aria-label="Prolog代写代考 (957 items)">Prolog代写代考</a><a href="https://powcoder.com/tag/file-system/" class="tag-cloud-link tag-link-281 tag-link-position-23" style="font-size: 13.850340136054px;" aria-label="file system (902 items)">file system</a><a href="https://powcoder.com/tag/c/" class="tag-cloud-link tag-link-265 tag-link-position-24" style="font-size: 13.578231292517px;" aria-label="c++代做 (764 items)">c++代做</a><a href="https://powcoder.com/tag/computer-architecture/" class="tag-cloud-link tag-link-507 tag-link-position-25" style="font-size: 13.47619047619px;" aria-label="computer architecture (712 items)">computer architecture</a><a href="https://powcoder.com/tag/er/" class="tag-cloud-link tag-link-433 tag-link-position-26" style="font-size: 13.47619047619px;" aria-label="ER (711 items)">ER</a><a href="https://powcoder.com/tag/gui/" class="tag-cloud-link tag-link-290 tag-link-position-27" style="font-size: 13.47619047619px;" aria-label="gui (711 items)">gui</a><a href="https://powcoder.com/tag/gpu/" class="tag-cloud-link tag-link-396 tag-link-position-28" style="font-size: 13.272108843537px;" aria-label="GPU (620 items)">GPU</a><a href="https://powcoder.com/tag/data-science/" class="tag-cloud-link tag-link-272 tag-link-position-29" style="font-size: 13.272108843537px;" aria-label="data science (615 items)">data science</a><a href="https://powcoder.com/tag/x86%e6%b1%87%e7%bc%96/" class="tag-cloud-link tag-link-514 tag-link-position-30" style="font-size: 13.238095238095px;" aria-label="x86汇编代写代考 (606 items)">x86汇编代写代考</a><a href="https://powcoder.com/tag/case-study/" class="tag-cloud-link tag-link-468 tag-link-position-31" style="font-size: 13.204081632653px;" aria-label="case study (586 items)">case study</a><a href="https://powcoder.com/tag/distributed-system/" class="tag-cloud-link tag-link-277 tag-link-position-32" style="font-size: 13.170068027211px;" aria-label="distributed system (576 items)">distributed system</a><a href="https://powcoder.com/tag/android/" class="tag-cloud-link tag-link-256 tag-link-position-33" style="font-size: 13.034013605442px;" aria-label="android (527 items)">android</a><a href="https://powcoder.com/tag/kernel/" class="tag-cloud-link tag-link-470 tag-link-position-34" style="font-size: 13.034013605442px;" aria-label="kernel (520 items)">kernel</a><a href="https://powcoder.com/tag/arm/" class="tag-cloud-link tag-link-483 tag-link-position-35" style="font-size: 13px;" aria-label="ARM汇编代写代考 (514 items)">ARM汇编代写代考</a></div> </nav></aside><aside id="block-4" class="widget widget_block"> <div class="wp-block-group is-layout-flow wp-block-group-is-layout-flow"><div class="wp-block-group__inner-container"><ul class="wp-block-latest-posts__list wp-block-latest-posts"><li><a class="wp-block-latest-posts__post-title" href="https://powcoder.com/2024/10/12/%e7%a8%8b%e5%ba%8f%e4%bb%a3%e5%86%99-comp2521-24t3-assignment-1-2/">程序代写 COMP2521 24T3 – Assignment 1</a></li> <li><a class="wp-block-latest-posts__post-title" href="https://powcoder.com/2024/10/12/%e4%bb%a3%e5%86%99%e4%bb%a3%e8%80%83-compsys-705-formal-methods-for-safety-critical-software-test-17-october-20/">代写代考 COMPSYS 705 Formal Methods for Safety Critical Software Test, 17 October 20</a></li> <li><a class="wp-block-latest-posts__post-title" href="https://powcoder.com/2024/10/07/%e7%a8%8b%e5%ba%8f%e4%bb%a3%e5%86%99-comp2521-24t3-assignment-1/">程序代写 COMP2521 24T3 – Assignment 1</a></li> <li><a class="wp-block-latest-posts__post-title" href="https://powcoder.com/2024/09/30/%e7%a8%8b%e5%ba%8f%e4%bb%a3%e5%86%99-comp4500-7500-2/">程序代写 COMP4500/7500</a></li> <li><a class="wp-block-latest-posts__post-title" href="https://powcoder.com/2024/09/30/%e4%bb%a3%e5%86%99%e4%bb%a3%e8%80%83-comp4161-t3-2024-advanced-topics-in-software-verification/">代写代考 COMP4161 T3/2024 Advanced Topics in Software Verification</a></li> </ul></div></div> </aside> </div><!-- .sidebar-main --> </div><!-- #secondary --> </div> <!-- ast-container --> </div><!-- #content --> <footer class="site-footer" id="colophon" itemtype="https://schema.org/WPFooter" itemscope="itemscope" itemid="#colophon"> <div class="site-below-footer-wrap ast-builder-grid-row-container site-footer-focus-item ast-builder-grid-row-full ast-builder-grid-row-tablet-full ast-builder-grid-row-mobile-full ast-footer-row-stack ast-footer-row-tablet-stack ast-footer-row-mobile-stack" data-section="section-below-footer-builder"> <div class="ast-builder-grid-row-container-inner"> <div class="ast-builder-footer-grid-columns site-below-footer-inner-wrap ast-builder-grid-row"> <div class="site-footer-below-section-1 site-footer-section site-footer-section-1"> <div class="ast-builder-layout-element ast-flex site-footer-focus-item ast-footer-copyright" data-section="section-footer-builder"> <div class="ast-footer-copyright"><p>Copyright © 2024 PowCoder代写 | Powered by <a href="https://wpastra.com/" rel="nofollow noopener" target="_blank">Astra WordPress Theme</a></p> </div> </div> </div> </div> </div> </div> </footer><!-- #colophon --> </div><!-- #page --> <link rel="stylesheet" href="https://powcoder.com/wp-content/cache/minify/12163.css" media="all" /> <script id="astra-theme-js-js-extra"> var astra = {"break_point":"921","isRtl":"","is_scroll_to_id":"","is_scroll_to_top":"","is_header_footer_builder_active":"1","responsive_cart_click":"flyout"}; </script> <script src="https://powcoder.com/wp-content/cache/minify/75800.js"></script> <script src="https://stats.wp.com/e-202445.js" id="jetpack-stats-js" data-wp-strategy="defer"></script> <script id="jetpack-stats-js-after"> _stq = window._stq || []; _stq.push([ "view", JSON.parse("{\"v\":\"ext\",\"blog\":\"132118579\",\"post\":\"28525\",\"tz\":\"8\",\"srv\":\"powcoder.com\",\"j\":\"1:13.9.1\"}") ]); _stq.push([ "clickTrackerInit", "132118579", "28525" ]); </script> <script> /(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> <!-- Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/ Object Caching 271/331 objects using Disk Page Caching using Disk: Enhanced Content Delivery Network via N/A Minified using Disk Served from: powcoder.com @ 2024-11-07 13:36:59 by W3 Total Cache -->